Warum führt der Ruhezustand zwei Abfragen aus, wenn eine transiente Entität zur Zusammenführung übergeben wird?Java

Java-Forum
Guest
 Warum führt der Ruhezustand zwei Abfragen aus, wenn eine transiente Entität zur Zusammenführung übergeben wird?

Post by Guest »

In der JPA-Spezifikation heißt es:Wenn X eine neue Entitätsinstanz ist, wird eine neue
verwaltete Entitätsinstanz X' erstellt und der Status von X wird in die kopiert Neue verwaltete Entitätsinstanz >

Code: Select all

entityManager.getTransaction().begin();
//let's assume we dont have a employee with id 2 in database
Employee e=new Employee();
e.setId(2);
e.setName("john");
/*
If I understand correctly the below query should run just an INSERT query
when context is flushed
but hibernate runs two queries,SELECT followed by INSERT
*/
entityManager.merge(e);
// entityManager.getTransaction().commit();
Fall 2:-

Code: Select all

entityManager.getTransaction().begin();
//let's assume we have a employee with id 3 in database
Employee e=new Employee();
e.setId(3);
e.setName("arthur");
/*
If I understand correctly the below query should fail to run because
then we would have two records with same primary key when context is flushed
but hibernate runs two queries,SELECT followed by UPDATE
*/
entityManager.merge(e);
// entityManager.getTransaction().commit();
Ich bin neu im Ruhezustand. Ist mein Verständnis der Zusammenführung richtig und wenn nicht, was übersehe ich? Außerdem scheint Merge auch für transiente Entitäten zu funktionieren, oder?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post