У меня проблема при тестировании моего DAOObject. У меня есть две сущности, которые связаны отношением @oneToOne.
Классы:
@Entity
@Table
public class Device extends HyEntity {
@OneToOne(mappedBy = "device")
private EndUser endUser;
//getters+setters
}
и
@Entity
@Table
public class EndUser extends HyEntity {
private String firstname;
private String lastname;
@OneToOne
private Device device;
//getters+setters
}
В DAO я делаю следующее:
Device d1 = new Device();
EndUser e1 = new EndUser();
e1.setFirstname("Hans");
e1.setLastname("Muster");
e1.setDevice(d1);
repo.saveEntity(d1);
repo.saveEntity(e1);
sf.getCurrentSession().flush();
repo.updateEntity(d1);
sf.getCurrentSession().flush();
Assert.notNull(repo.getEndUserById(e1.getId()));
Assert.notNull(repo.getEndUserById(e1.getId()).getDevice());
Assert.notNull(repo.getDeviceById(d1.getId()));
sf.getCurrentSession().flush();
d1 = repo.getDeviceById(d1.getId());
Hibernate.initialize(d1);
Hibernate.initialize(d1.getEndUser());
Assert.notNull(repo.getDeviceById(d1.getId()).getEndUser()); //FAILS endUser of Device is always NULL
Как видите, ни session.flush (), ни Hibernate.Initalize не работают. Конечный пользователь не назначен устройству.
Если я удалю @Transactional, ... все работает как надо.
Есть ли способ заставить это работать?
В противном случае мне всегда придется вручную удалять созданные объекты в базе данных после теста, что очень раздражает.
Надеясь на ответ.
Заранее спасибо.