2014-01-27 109 views

回答

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; 
    } 

然後,你可以定義一個獨立的實體usersessionid在同時包含FK的,至少這是休眠的工具如何生成複合鍵關係

0

在JSR文檔中有非常好的組合PK的例子,請參閱JSR 317的鏈接中的persistence-2_0-final-spec.pdf,2.4主鍵和實體標識部分有很好的例子。

1

enter image description here

如果有參與加入(僅限即外鍵)沒有額外的字段。你可以使用下面的技術,不需要java域對象,hibernate會爲你全力以赴。

http://www.mkyong.com/hibernate/hibernate-many-to-many-relationship-example-annotation/

你仍然可以在你的表中其他列如CREATION_DATE,但它們的值將需要在數據庫級別進行更新。

+0

我想避免在數據庫級別進行手動更新並將其他屬性作爲連接表的列。 – yousafsajjad