2012-08-05 10 views
5

Mevcut bir google uygulama motoru java uygulamasının jpa ile çalışıyorum ve şimdi birçok farklı amaç için nesnelleştirmek üzere hareket etmeye çalışıyorum.Google App Engine java değiştirin jpa @ OneToMany/@ ManyToOne ile nesneleştirin

Geçerli uygulama, varlıkların aşağıdaki temsiline sahiptir.

Class Parent{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key key; 

    @OneToMany(cascade=CascadeType.ALL, mappedBy="parent") 
    private List<Child> childs = null; 
} 

Class Child{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key key; 

    @ManyToOne 
    private Parent parent; 

} 

Yukarıdaki gösterimi Objectify'ta nasıl alabilirim? Objectify4 kullanıyorum.
@Parent'i gördüm, ancak bir ebeveyn alınırken doğrudan alt varlıkların listesini yüklemek mümkün görünmüyor mu?

sayesinde

Ramesh.V

cevap

2

somutlaştırabilir ilişkisel veri depoları ve ORMs daha concepts farklı kullanır. İlişkiler Key s kullanılarak oluşturulur ve otomatik olarak yüklenmez. Objectify here'daki ilişkilerin modellenmesi hakkında bilgi edinebilirsiniz. @Parent ilişkisi something special şeklindedir ve 1: n veya n: m ilişkileri ile ilgili olan değil.

Yani temelde

class Parent { 
    Key<Child>[] childs; 
} 

class Child { 
    Key<Parent> parent; 
} 

var Ve sonra Objectfy hizmeti, örneğin aracılığıyla varlıkları alacağı

Parent aParent = ofy.get(aChild.parent); 

Tembel yüklü koleksiyon yok. Bir dizi nesne oluşturmak istiyorsanız, bunu açıkça yapmanız gerekir.

+0

sayesinde mümkün ebeveyn çocuk tuşları/referanslar kaydetmeden ebeveynden çocuk varlığı getirilemiyor etmektir. –

+0

Dernekler, 'Anahtar 'ile ifade edilir; bu nedenle,' Ebeveyn 'veya' Çocuk 'seçeneklerine ihtiyacınız vardır. Bunların her ikisinde de varsa, bunu sürdürmek daha zor olan ve genellikle çok kullanışlı olmayan iki yönlü bir ilişki yaratırsınız. 'Ana' dizisinde 'Key' dizisini bırakabilirsiniz. O zaman sadece Nesne'nin tüm 'Child' nesnelerini belirli bir' Parent '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Bu, özellikle belirli ölçütlere veya sayfalamalara göre daha fazla filtrelenmesi gereken çok sayıda çocuğunuz varsa yararlıdır. –

+0

Peki, JPA, ebeveynleri veya çocuklarını anahtar saklamadan nasıl çalışır? Mevcut GAE java uygulamam JPA kullanıyor ve ben de veri mağazasının çocuk veya ebeveynte herhangi bir anahtarı bulunmadığını görüyorum. Ve sadece ana çocuk ilişkisi vardır, hiçbir anahtar hem ebeveynte hem de çocukta saklanmaz. Değişikliklerim şimdi mevcut veritabanını etkilememelidir. Nasıl yapabilirim. Detaylı açıklamanız için teşekkürler. –