Mam już działającą aplikację java aplikacji Javy w wyszukiwarce Google z jpa i teraz próbuję przenieść się do zobiektywizowania w wielu różnych celach.Google App Engine java zastąpić jpa @ OneToMany/@ ManyToOne z objectify
Obecna aplikacja ma przedstawioną poniżej reprezentację encji.
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;
}
Jak mogę uzyskać powyższe przedstawienie w Objectify? Używam objectify4.
Widziałem @Parent, ale nie można załadować listy elementów podrzędnych bezpośrednio podczas pobierania rodzica?
Dzięki,
Ramesh.V
Dzięki za odpowiedź, czy jest możliwe, aby pobrać żywe dziecko od rodzica bez przechowywania kluczy Dziecko/referencje w rodzica. –
Powiązania są wyrażane przez 'Klucz's, więc potrzebujesz ich w' Parent' lub 'Child'. Jeśli masz je w obu tworzysz dwukierunkowe powiązanie, które jest trudniejsze do utrzymania i często nie jest zbyt użyteczne. Możesz puścić tablicę 'Key' w' Parent'. Następnie potrzebujesz metod Objectify do filtrowania, aby uzyskać wszystkie obiekty 'Child' z określonym' Kluczem 'Parent'. Jest to szczególnie przydatne, jeśli masz dużą liczbę dzieci, które powinny być dalej filtrowane według określonych kryteriów lub stronicowania. –
Ale w jaki sposób JPA działa bez przechowywania kluczy w rodzicu lub podrzędnym? Moja istniejąca aplikacja GAE java używa formatu JPA i widzę, że datastore nie ma żadnego klucza przechowywanego w obu elementach potomnych lub rodzicach. I ma tylko związek rodzicielski dziecko nie klucze są przechowywane zarówno rodzic lub dziecko. Moje zmiany teraz nie powinny wpływać na istniejącą bazę danych. Jak mogę to zrobić. Dziękuję za szczegółowe wyjaśnienie. –