如何使用Hibernate创建一个实体表,将其中的外键作为主键。将它考虑到两个表之间的连接表(具有很少的其他属性),它们之间具有多对多的关系。
任何示例代码?
答案 0 :(得分:1)
有没有使用PK的真正原因?如果实体有其他属性,我会说你最好用一个。
如果你真的不想要一个,你可以使用复合键来使用JPA的@EmbeddedId
private UserSessionId id
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "userId", column = @Column(name = "user_id", nullable = false)),
@AttributeOverride(name = "sessionId", column = @Column(name = "session_id", nullable = false)) })
public UserSessionId getId() {
return this.id;
}
public void setId(UserSessionId id) {
this.id = id;
}
然后你可以定义一个包含两个FK的独立实体UserSessionId,至少这是Hibernate Tools如何生成复合键关系
答案 1 :(得分:1)
如果连接中没有涉及额外的字段(即仅限外键)。你可以使用以下技术,不需要java域对象,hibernate会为你解决这个问题。
http://www.mkyong.com/hibernate/hibernate-many-to-many-relationship-example-annotation/
您的表中仍然可以有其他列,例如creation_date,但是它们的值需要在数据库级别更新。
答案 2 :(得分:0)
JSR文档中有非常好的组合PK示例,请参阅链接中JSR 317的persistence-2_0-final-spec.pdf,2.4主键和实体标识部分有很好的例子。< / p>