2011-09-13 125 views

回答

6

首先不要在模型中擴展(play.db.jpa.Model)模型,而是使用GenericModel來生成Id。

然後你可以使用助手類,當創建對象(在構造函數中)時調用。

或致電助手類的保存時(因此我必須創建包裝DAO,保存過程中包裝DAO在這個對象不是這樣我就可以生成ID保存對象)

,或者如果您想要更簡單的方法使用JPA UUID。見下面的代碼。

@Entity 
public class User extends GenericModel { 
    @Id 
    @GeneratedValue(generator = "system-uuid") 
    @GenericGenerator(name = "system-uuid", strategy = "uuid") 
    public String id; 
} 
+0

GenericModel:不是反模式嗎?請參閱:http://en.wikipedia.org/wiki/BaseBean – Kowser

+0

請參閱維基的評論和維基的中立性,這些維基的中立性說「這篇文章的中立性是有爭議的」,所以稱這種反模式不合適。 – indrap

+0

是的,我明白了。需要研究更多以澄清問題。 – Kowser

5

好吧,Model類只是GenericModel的一個子類,它添加了屬性,方法和註釋,以便爲模型類提供生成的Long作爲@Id屬性。

如果你不想這樣做,你可以繼承GenericModel,並提供你自己的@Id。在你的情況下,這將是一個字符串來保存UUID。不過,您需要提出在新模型實例上初始化它的策略。

我不知道JPA提供的內置策略來生成UUID。一個簡單的方法是創建一個助手類,您可以調用一個方法來獲取新的UUID,並確保每次創建新模型時調用該類。