У меня есть интеграционный тест DAO, в котором я использую общий EntityManager (через Spring, используя SharedEntityManagerCreator).Класс теста помечен как @Transactional, как и тестируемый метод DAO.
Как в классе теста, так и в DAO я получаю сущность User следующим образом:
User user = em.find(User.class, "test");
В настройке моего теста я изменил объект пользователя, но я не былне вижу изменений в DAO, когда тест запускается.Оказалось, что две ссылки не относятся к одному и тому же объекту;Я доказал это в своем тестовом классе, используя:
System.out.println("User objects equal = " + (user == dao.getUser()));
Это распечатано как ложное.Я ожидаю, что каждый вызов EntityManager, использующий один и тот же ключ, будет возвращать одну и ту же ссылку на объект, и был удивлен (и немного встревожен!), Обнаружив, что это не тот случай.Кто-нибудь может пролить свет на это?Я реорганизовал свой код, так что на самом деле это не проблема (в DAO все равно не должно быть объекта User), но я все же хотел бы лучше понять это.
Спасибо!
Java 1.6u22, Toplink Essentials 2.0.1, Spring 2.5.6