sql >> Database >  >> RDS >> Mysql

Hoe vul ik externe sleutelwaarden in in een Hibernate + Spring JPA-configuratie wanneer bovenliggende/onderliggende objecten tegelijkertijd worden bewaard?

Die code heeft twee dingen waardoor hij niet werkt:

  1. Uw entiteiten hebben geen @Id . Je hebt het waarschijnlijk gewoon weggelaten omdat dit een voorbeeld is, maar het is het vermelden waard.
  2. U heeft de kolom parent_id dubbel toegewezen . Onderliggend heeft zowel een lang veld als een bovenliggend veld toegewezen aan dezelfde kolom. Weg met de Lange. Het is de ouderrelatie die je zoekt.

Wat je daarna hebt, is een volledig traditionele bidirectionele één-op-veel met een join-kolom. Als het niet voor u werkt, doet u iets verkeerd in de code waarin u ze maakt en opslaat. Zeer waarschijnlijk maakt u de objecten niet goed. Correcte code die deze entiteiten gebruikt, ziet er ongeveer zo uit:

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

Merk vooral op dat het kind zowel in de ouder als de ouder in het kind moet worden geplaatst. Bouw geen half-gebroken objectmodel en verwacht dat Hibernate je rotzooi opruimt. Veel mensen negeren deze schijnbaar voor de hand liggende vereiste en vragen zich af waarom Hibernate onstabiel en/of onbetrouwbaar lijkt.




  1. Hoe maak ik een rijgenerator in MySQL?

  2. Hoe kan ik met PHP het '€'-symbool in MySQL opslaan?

  3. Hoe een getal met voorloopnullen op te vullen in MariaDB

  4. Retournummer uit Oracle Select-statement na parseerdatum