Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wypełnić wartości kluczy obcych w konfiguracji Hibernate + Spring JPA, gdy obiekty nadrzędne/podrzędne są utrwalane w tym samym czasie?

Ten kod ma dwie rzeczy, które uniemożliwiają mu działanie:

  1. Twoje jednostki nie mają @Id . Prawdopodobnie właśnie to opuściłeś, ponieważ jest to przykład, ale warto to podkreślić.
  2. Podwójnie zmapowałeś kolumnę parent_id . Element podrzędny ma zarówno pole Long, jak i pole Parent mapowane do tej samej kolumny. Pozbądź się Długiego. Chodzi o relacje z rodzicami.

Po tym masz całkowicie tradycyjny dwukierunkowy jeden-do-wielu z kolumną sprzężenia. Jeśli to nie działa, robisz coś złego w kodzie, w którym je tworzysz i zapisujesz. Bardzo prawdopodobne, że nie tworzysz obiektów poprawnie. Prawidłowy kod używający tych encji wyglądałby mniej więcej tak:

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Parent p = new Parent();
Child child = new Child();
child.parent = p;
Child child1 = new Child();
child1.parent = p;
p.children = Arrays.asList(child, child1);
session.save(p);
session.save(p.children.get(0));
session.save(p.children.get(1));
tx.commit();

Zwróć szczególną uwagę, że dziecko powinno być ustawione w rodzicu, tak samo jak rodzic w dziecku. Nie buduj na wpół zepsutego modelu obiektów i oczekuj, że Hibernate posprząta twój bałagan. Wiele osób ignoruje to pozornie oczywiste wymaganie i zastanawia się, dlaczego Hibernate wydaje się niestabilny i/lub zawodny.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd łącznika MySQL Wartość strefy czasowej serwera Czas środkowoeuropejski

  2. Błąd w zmiennej DECLARE w procedurze MySql

  3. Błąd Magento SQLSTATE, jeśli w magazynie produktu pozostał jeden przedmiot

  4. Zmniejsz wartość w mysql, ale nie ujemną

  5. Błąd w MySql podczas instalacji pakietu