Я не знаю, почему SaveAtorUpdate () /update () не работает, как ожидалось в отдельно li> Принесите существующую сущность: сущность извлекается из базы данных и находится в постоянном состоянии. Entity.
Модифицировать объект: отдельная сущность изменена. к постоянному состоянию и обновлению существующей записи в базе данных. Оператор обновления SQL для синхронизации изменений с базой данных.alien_age alien_id alien_name
455 384 Anny
< /code>
app.java:
package com.ankit.hibn8;
import java.util.List;
import java.util.Random;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import org.hibernate.query.Query;
import com.ankit.hibn8.AlienDO;
public class App {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Configuration config = new Configuration().configure().addAnnotatedClass(com.ankit.hibn8.AlienDO.class);
SessionFactory sessFactory = config.buildSessionFactory();
Session session = sessFactory.openSession();
Transaction t = session.beginTransaction();
try {
AlienDO existingAlien = session.get(AlienDO.class, 384);
if (existingAlien != null) {
session.evict(existingAlien);
existingAlien.setAlienAge(455);
existingAlien.setAlienName("Annkit");
System.out.println("Before saveOrUpdate: " + existingAlien);
session.saveOrUpdate(existingAlien); // Should update the existing record
System.out.println("After saveOrUpdate: " + existingAlien);
transaction.commit();
} else {
System.out.println("Alien with ID 384 does not exist.");
transaction.rollback();
}
} catch (Exception e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
< /code>
Когда я запускаю эту программу, она не обновляет запись.
db имеет те же данные перед запуском. < /p>
alien_age alien_id alien_name
455 384 Anny
< /code>
и журналы отпечатки: < /p>
Hibernate: select a1_0.alien_id, a1_0.alien_age, a1_0.alien_name from alien_table as a1_0 where a1_0.alien_id=?
Before saveOrUpdate: AlienDO [alienId=384, alienName=Annkit, alienAge=455]
Hibernate: select a1_0.alien_id, a1_0.alien_age, a1_0.alien_name from alien_table as a1_0 where a1_0.alien_id=?
After saveOrUpdate: AlienDO [alienId=384, alienName=Annkit, alienAge=455]
Tex Commit.
< /code>
Если я заменяю SaveTorUpDate () на Update (). Затем журналы печатаются как: < /p>
Hibernate: select a1_0.alien_id, a1_0.alien_age, a1_0.alien_name from alien_table as a1_0 where a1_0.alien_id=?
Before Update: AlienDO [alienId=384, alienName=Annkit, alienAge=455]
After Update: AlienDO [alienId=384, alienName=Annkit, alienAge=455]
Tex Commit.
< /code>
В обоих случаях обновление не происходит. Простите меня, если этот вопрос глупый;-)
Я ссылаюсь на эту статью: https://nikhilsukhani.medium.com/hibern ... sistentent -Детхед-восстановитель-40BA2F689B07
Подробнее здесь: https://stackoverflow.com/questions/794 ... ched-state