Hibernate配置联合主键(内部类实现主键)
public class A{ private A.id id; private String bar; public static class Id{ private String a; private String b; //重写eqauls和hashcode方法 //getter,setter } //getter,setter}? ?映射文件:
??<hibernate-mapping package="org.xx.yyy.zzzz">
<!--Depends on Hibernate configuration with hibernate.hbm2ddl.auto=update.--><class name="A" table="TA"> <composite-id name="id" type="string"> <column name="a" /> </key-property> <key-property name="b" type="string"> <column name="b" /> </key-property> </composite-id> <property name="bar" column="bar" type="text" not-null="false" /> </class>
? ?注意Java类中,Id类必须是静态类,否则会报No default constructor for entity的错误。
? ?注意配置文件中,配置联合主键的class中间要用$符号。
?
? ?关于静态内部类,其相当于写在Java文件中的普通类。可参考以下文字:
??http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.3
https://forum.hibernate.org/viewtopic.php?f=1&t=973414&view=previous
?写道Check out this section of the Java language spec that explains the difference between static and non-static inner classes: