hibernate的联合主键怎么设置?inverse 设置成false 对sql语句有什么影响
首先需要建立一个主键类:bqMy
public class SCMapping implements Serializable{B\
private Integer sno; //学号A4
private Integer cno; //课程号MC_dS
private Integer grade; //成绩60
©www.java125.cn WuH
...F*o
}©www.java125.cn G&$tZ=
©www.java125.cn m*)
使用映射文件映射联合主键时,持久化类必须满足三个条件:M6gy?
1.实现java.io.Serializable接口;:I
2.覆盖hashCode()方法;p
3.覆盖equals()方法。S{#<
©www.java125.cn b
接着写映射文件:?8Lg
<hibernate-mapping auto-import="falst">+RCA&x
<class name="com.tarena.SCMapping" table="scmapping" catalog="joblog">T?vP#}
<composite-id>y\}
<key-property name="sno" type="integer">.8;OY
<column name="Sno" />/Y&4u
</key-property>w]0M
<key-property name="cno" type="integer">yt5
<column name="Cno" />q.
</key-property>o
</composite-id>#Uq
©www.java125.cn `s>
<property name="grade" type="integer">YXT
<column name="Grede"/>ZY\b5
</property>PS!
©www.java125.cn N/o'
</class>i
</hibernate-mapping>J)
©www.java125.cn mdu
然后调用Hibernae Api测试。nkc36?
©www.java125.cn FE)@q4
------------------------------umNTU:
关于inverse 设置成false 对sql语句有什么影响:8Ie
inverse属性默认是false,就是说关系的两端都来维护关系。@Pi
比如Student和Teacher是多对多关系,用一个中间表TeacherStudent维护。Gp)i
如果Student这边inverse="true", 那么关系由另一端Teacher维护,就是说当插入Student时,不会操作TeacherStudent表(中间表)。只有Teacher插入或删除时才会触发对中间表的操作。|xH1[
所以两边都inverse="true"是不对的,会导致任何操作都不触发对中间表的影响;MFP
当两边都inverse="false" 或默认时,会导致在中间表中插入两次关系。
首先需要建立一个主键类:bqMy
public class SCMapping implements Serializable{B\
private Integer sno; //学号A4
private Integer cno; //课程号MC_dS
private Integer grade; //成绩60
©www.java125.cn WuH
...F*o
}©www.java125.cn G&$tZ=
©www.java125.cn m*)
使用映射文件映射联合主键时,持久化类必须满足三个条件:M6gy?
1.实现java.io.Serializable接口;:I
2.覆盖hashCode()方法;p
3.覆盖equals()方法。S{#<
©www.java125.cn b
接着写映射文件:?8Lg
<hibernate-mapping auto-import="falst">+RCA&x
<class name="com.tarena.SCMapping" table="scmapping" catalog="joblog">T?vP#}
<composite-id>y\}
<key-property name="sno" type="integer">.8;OY
<column name="Sno" />/Y&4u
</key-property>w]0M
<key-property name="cno" type="integer">yt5
<column name="Cno" />q.
</key-property>o
</composite-id>#Uq
©www.java125.cn `s>
<property name="grade" type="integer">YXT
<column name="Grede"/>ZY\b5
</property>PS!
©www.java125.cn N/o'
</class>i
</hibernate-mapping>J)
©www.java125.cn mdu
然后调用Hibernae Api测试。nkc36?
©www.java125.cn FE)@q4
------------------------------umNTU:
关于inverse 设置成false 对sql语句有什么影响:8Ie
inverse属性默认是false,就是说关系的两端都来维护关系。@Pi
比如Student和Teacher是多对多关系,用一个中间表TeacherStudent维护。Gp)i
如果Student这边inverse="true", 那么关系由另一端Teacher维护,就是说当插入Student时,不会操作TeacherStudent表(中间表)。只有Teacher插入或删除时才会触发对中间表的操作。|xH1[
所以两边都inverse="true"是不对的,会导致任何操作都不触发对中间表的影响;MFP
当两边都inverse="false" 或默认时,会导致在中间表中插入两次关系。