在hibernate中,如何在具有复合键的两个表之间进行一一映射?
我有两张桌子vanTb和Vansiteb。vanTb的主键是vId。vanSiteTb有一个由2列组成的复合主键,即。vNum和vSiteC vanTb还有两个柱vNum和vSiteC 这两个表之间存在一对一的关系 数据库架构来自旧数据库,因此无法更改 在hibernate中,我定义了两个实体bean,即。java和VanSiteTb.java 对于VanSiteTb.java,我使用@Embeddeble定义了一个新的java类。此类的对象在VanSiteTb.java中使用@EmbeddedId定义 现在,我想定义这两个表之间的一一关系 所以 上述查询将从两个表返回一个唯一的行 请告诉我解决方案。要指定vanTb至vanSiteTb内的@OneTONE连接列,应为:在hibernate中,如何在具有复合键的两个表之间进行一一映射?,hibernate,jpa,sybase,one-to-one,joincolumn,Hibernate,Jpa,Sybase,One To One,Joincolumn,我有两张桌子vanTb和Vansiteb。vanTb的主键是vId。vanSiteTb有一个由2列组成的复合主键,即。vNum和vSiteC vanTb还有两个柱vNum和vSiteC 这两个表之间存在一对一的关系 数据库架构来自旧数据库,因此无法更改 在hibernate中,我定义了两个实体bean,即。java和VanSiteTb.java 对于VanSiteTb.java,我使用@Embeddeble定义了一个新的java类。此类的对象在VanSiteTb.java中使用@Embedded
@JoinColumns({
@JoinColumn(name = "vNum", referencedColumnName = "vNum"),
@JoinColumn(name = "vSiteC", referencedColumnName = "vSiteC")
})
如果在vanSiteTb中有一列vanTab的主键vId,则应将其反向映射回vanTab,如下所示:
@JoinColumn(name = "vId", referencedColumnName = "vId")
请记住,name表示要在其中添加join column注释的实体的当前表中的列名,referencedColumnName表示关联实体表中的列名。我是否还需要在vanSiteTb中写入@OneToOne?如果是,那么我还需要在vanSiteTb实体bean中定义一个属性vanTb,对吗?除非需要通过对象图遍历回vanTb,否则不需要在vanSiteTb中放置@OneToOne。
@JoinColumns({
@JoinColumn(name = "vNum", referencedColumnName = "vNum"),
@JoinColumn(name = "vSiteC", referencedColumnName = "vSiteC")
})
@JoinColumn(name = "vId", referencedColumnName = "vId")