2011-09-13 6 views

答えて

6

Idを生成するモデルではなく、GenericModelを使用するモデルで、(play.db.jpa.Model)Modelを拡張しないでください。

オブジェクトを作成するとき(コンストラクタ内で)呼び出されたヘルパークラスを使用できます。保存されたとき

やヘルパークラスを呼び出す

か場合を(したがって、私は、ラッパーDAOを作成する必要があり、私はオブジェクトを保存IDを生成することができるように、保存プロセスは、オブジェクトではないラッパーDAOで行われます)より簡単なアプローチ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

wikiの中立性とWikiの中立性については、この記事の中立性は「不適切です」と呼ばれています。 – indrap

+0

はい、そうです。問題を明確にするためにもっと勉強する必要があります。 – Kowser

5

まあ、Modelクラスは、Modelクラスの@Idプロパティとして生成されたLongを提供するために、属性、メソッド、およびアノテーションを追加するGenericModelのサブクラスです。

代わりにGenericModelをサブクラス化し、独自の@Idを提供することができます。あなたの場合、それはUUIDを保持するStringになります。しかし、新しいモデルインスタンスで初期化するための戦略を考え出す必要があります。

私は、JPAがUUIDを生成するために提供する組み込みの戦略には気づいていません。簡単な方法は、新しいUUIDを取得するメソッドを呼び出すヘルパークラスを作成し、新しいモデルを作成するたびに呼び出すことです。

関連する問題