2011-09-13 33 views

cevap

6

İlk don `t uzatmak (play.db.jpa.Model) Model sen Id üretmek ancak GenericModel kullanmak istiyorum.

daha sonra, nesne oluşturulduğunda çağrılan yardımcı sınıfı kullanabilirsiniz (kurucuda). kaydedildiğinde

veya yardımcı sınıf çağrı

veya eğer (böylece ben sarıcı DAO oluşturmak zorunda i nesneyi kaydetmek id oluşturabilir, böylece, kaydetme işlemi Nesne değil sarıcı DAO'sunda yapılır) Daha basit bir yaklaşım kullanmak istiyorsanız JPA UUID. Aşağıdaki kodlara bakın.

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

GenericModel: anti-pattern değil mi? bakınız: http://en.wikipedia.org/wiki/BaseBean – Kowser

+0

wiki ve "Bu yazının tarafsızlığı tartışmalı" diyen wiki'nin tarafsızlığına ilişkin yorumu görün, bu uygunsuz anti-pattern olarak adlandırılır. – indrap

+0

evet, öyle görüyorum. Sorunu açıklığa kavuşturmak için daha fazla çalışmaya ihtiyaç var. – Kowser

5

Eh, Model sınıfı bir modeliniz sınıfları için @id özelliği olarak uzun oluşturulan sağlamak için nitelik, yöntemler ve açıklamalar ekleyen GenericModel sadece bir alt sınıftır. Bunu istemiyorsanız

, bunun yerine GenericModel alt sınıfı ve kendi @id sağlayabilir. Sizin durumunuzda UUID'yi tutacak bir String olacaktır. Yine de, yeni model örneklerinde başlatmak için bir strateji bulmanız gerekecek.

JPA tarafından UUID'lerin üretilmesi için sağlanan yerleşik bir stratejiden haberdar değilim. Basit bir yöntem, yeni bir UUID almak için bir yöntemi çağırabileceğiniz ve her yeni bir model oluşturduğunuzda bunu aradığınızdan emin olmanıza yardımcı olacak bir yardımcı sınıfa sahip olmak olacaktır. Modelde