JPA 联结主键的配置
JPA联合主键的配置???? ?两个或多个字段组成的主键,我们叫联合主键。在面向对象中,我们用JPA怎么定义这种情
JPA 联合主键的配置
???? ?两个或多个字段组成的主键,我们叫联合主键。在面向对象中,我们用JPA怎么定义这种情况呢?
?? ?? 怎么定义联合主键?用面向对象的思想来思考的话,联合主键里的复合主键(字段),可以把它看成一个整体,然后采用一个主键类来描述这个复合主键的字段。
关于联合主键类,大家一定要遵守以下几点JPA规范:
必须提供一个public的无参数构造函数。 必须实现序列化接口。 必须重写hashCode()和equals()这两个方法。这两个方法应该采用复合主键的字段作为判断这个对象是否相等的。 联合主键类的类名结尾一般要加上PK两个字母代表一个主键类,不是要求而是一种命名风格。
ArtLinePK.java
package?junit.test; ??????import?javax.persistence.EntityManager; ?? import?javax.persistence.EntityManagerFactory; ?? import?javax.persistence.Persistence; ?? ??import?org.junit.BeforeClass; ?? import?org.junit.Test; ?? ??import?cn.itcast.bean.ArtLine; ?? ??public?class?ArtLineTest?{ ?? ??????@BeforeClass?? ????public?static?void?setUpBeforeClass()?throws?Exception?{ ?? ????} ????????@Test?public?void?save(){ ?? ????????EntityManagerFactory?factory?=?Persistence ??????????.createEntityManagerFactory("itcast"); ?? ????????EntityManager?em?=?factory.createEntityManager(); ??????????em.getTransaction().begin(); ????????????em.persist(new?ArtLine("PEK","SHA","北京到上海")); ?? ??????????em.getTransaction().commit(); ??????????em.close(); ??????????factory.close(); ??????} ??}? 测试成功后,可以去查询看一下对应表的结构.??想想其中的原理.