JPA / Hibernate - 仅使用外键创建表

时间:2014-01-27 21:51:14

标签: spring hibernate jpa

如何使用Hibernate创建一个实体表,将其中的外键作为主键。将它考虑到两个表之间的连接表(具有很少的其他属性),它们之间具有多对多的关系。

任何示例代码?

3 个答案:

答案 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)

enter image description here

如果连接中没有涉及额外的字段(即仅限外键)。你可以使用以下技术,不需要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>