In meinem Code, ich habe wie folgt:Spring + JPA + Hibernate: Persist aktualisiert die Entität überraschend. Bitte gehen Sie durch die Details
- für einen Kurs Einheit abgefragt
- füllen Sie es mit den angegebenen Kursdaten.
- courseDao.update (Entität), die intern Persistenz (Entität) -Methode aufruft.
- Überraschenderweise wurden die Daten erfolgreich aktualisiert.
Ich bin mit diesem Verhalten der persist Methode verwirrt.
Bitte helfen Sie mir.
Code ist wie folgt:
//My Service......
@Service("myService")
@Transactional
public class MyServiceImpl implements MyService {
@Transactional(rollbackFor = { Throwable.class })
public void updateCourse(final Course course) throws MyServiceException {
------
------
CourseEntity courseEntity = courseDao.findById(course.getId());
populateCourseEntity(courseEntity, course);
courseDao.update(courseEntity);
}
}
//CourseDao.....
public class CourseDaoImpl implements CourseDao {
--------
public void update(final T entity) throws MyDaoException {
if (entity != null) {
this.entityManager.persist(entity);
}
else {
String errMsg = "Object to be updated cannot be null.";
throw new MyDaoException(errMsg);
}
}
}
Hallo Bozho, Danke für die Antwort. Aber ich habe eine Frage hier. In meinem Fall wird die Entität verwaltet, dann Was ist die Verwendung von Persist/Merge in dem Szenario als der "Entity Manager" wird automatisch die Änderungen beim Commit aktualisiert. Danke, Srihari – Srihari
keine Verwendung. es ist nicht notwendig. der Anruf tut nichts. – Bozho