2011-01-23 88 views
2

我正在爲具有以下域對象的羣聊進行項目。我想要的是CommentPK的orderId會根據提供的groupId自動遞增。如果我使用類似GenerationType.Table的方法,則pkColumnName =「max_id_name」,pkColumnValue =「max_comment_id」,valueColumnName =「max_id」,那麼orderId將是全局唯一的,這也將限制系統支持的最大註釋數「max_comment_id 「是一個常數。相反,我想使用pkColumnValue,它可以從例如提供的groupId派生。對組1來說,關鍵是max_comment_group_1,對於組2,讓該關鍵字爲「max_comment_group_2」。我只想使用這樣的JPA規範,我可以爲@TableGenerator中的pkColumnValue字段賦予變量值。但是任何冬眠特定的解決方案也可以。休眠JPA複合鍵自動生成選項

@Entity 
class Group 
{ 
@Id @GeneratedValue(strategy=GenerationType.IDENTITY) 
long id; 
String name; 
} 

@Entity 
class User 
{ 
@TableGenerator(
     name="max_ids_generator", 
     table="max_ids", 
     pkColumnName="max_id_name", 
     pkColumnValue="max_user_id", 
     valueColumnName="max_id", 
     initialValue=1, 
     allocationSize=1 
    ) 

@Id 
@GeneratedValue(strategy=GenerationType.TABLE, generator="max_ids_generator") 
long id; 
long name; 
} 

@Embeddable 
class CommentPK 
{ 
long groupId; 
long orderId; // this is the ordering of the comment, Eg. 1st comment, 2nd comment for the provided groupId. 
} 

@Entity 
class Comment 
{ 
@EmbeddedId 
CommentPK commentId; 
long userId; 
String comment; 
} 

在此先感謝。

+0

任何人都可以幫忙嗎? – nattu 2011-02-19 21:48:32

回答