Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да се попълнят стойностите на външния ключ в Hibernate + Spring JPA конфигурация, когато родителски/дъщерни обекти се запазват по едно и също време?

Този код има две неща, които му пречат да работи:

  1. Вашите субекти нямат @Id . Вероятно просто сте го оставили, защото това е пример, но си струва да го посочите.
  2. Двойно съпоставихте колоната parent_id . Дъщето има както дълго поле, така и поле родител, съпоставени в една и съща колона. Отърви се от Дългия. Търсите връзка с родител.

След това това, което имате, е напълно традиционна двупосочна едно към много с колона за присъединяване. Ако не работи за вас, значи правите нещо нередно в кода, където ги създавате и запазвате. Много вероятно не създавате обектите правилно. Правилният код, използващ тези обекти, би изглеждал така:

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();

Обърнете внимание специално, че детето трябва да бъде зададено в родителя, както и родителят в детето. Не изграждайте полусчупен обектен модел и очаквайте Hibernate да почисти бъркотията ви. Много хора пренебрегват това на пръв поглед очевидно изискване и се чудят защо Hibernate изглежда нестабилен и/или ненадежден.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. изтрийте файл с помощта на MySQL процедура

  2. cross-dbms начин да проверите дали низът е числов

  3. mysql заявка за актуализиране на полето до max(field) + 1

  4. Изпълняване на mySQL заявка като cron работа?

  5. Как мога да получа уникални стойности от таблицата с данни с помощта на dql?