sql >> Database teknologi >  >> RDS >> Mysql

Hvordan udfyldes fremmednøgleværdier i en Hibernate + Spring JPA-konfiguration, når overordnede/underordnede objekter bevares på samme tid?

Den kode har to ting, der forhindrer den i at virke:

  1. Dine enheder har ingen @Id . Du har sikkert bare ladet det være, fordi dette er et eksempel, men det er værd at påpege.
  2. Du har dobbelttilknyttet kolonnen parent_id . Barn har både et langt felt og et overordnet felt knyttet til den samme kolonne. Slip af med den lange. Det er forældreforholdet, du leder efter.

Derefter er det, du har der, en helt traditionel tovejs en-til-mange med en join-kolonne. Hvis det ikke virker for dig, så gør du noget forkert i koden, hvor du opretter og gemmer dem. Det er meget sandsynligt, at du ikke opretter objekterne korrekt. Korrekt kode ved hjælp af disse entiteter ville se sådan ud:

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

Bemærk især, at barnet skal sættes i forælderen såvel som forælderen i barnet. Byg ikke en halvt ødelagt objektmodel, og forvent at Hibernate rydder op i dit rod. Mange mennesker ignorerer dette tilsyneladende indlysende krav og undrer sig over, hvorfor Hibernate virker ustabil og/eller upålidelig.




  1. får fejl HTTP Status 405 - HTTP-metoden GET understøttes ikke af denne URL, men bruges aldrig 'get'?

  2. Event Scheduler bør køre hver måned

  3. Finmasket adgangskontrol

  4. Sådan viser du en dato i amerikansk datoformat i SQL Server (T-SQL)