Я понимаю, что JPA не работает так, как я ожидал, так как часто я получаю несколько экземпляров одного объекта в сеансе.Java JPA/Hibernate: Как избежать множественных экземпляров объекта в сеансе?
Вот исследование случай: родитель имеет коллекцию ребенка переведенный с @OneToMany
В одном методе:
- получить экземпляр Материнской P объекта
- нагрузки коллекция ребенка с P.getChilds(): он содержит экземпляр C1 и C2
- затем найдите конкретного ребенка с оптимизированным запросом JPA, имеющим родительский P, имеет параметр: Child C = dao.getSpecificChild (P)
Здесь я ожидал бы, что C будет одним из двух уже загруженных экземпляров (из C1 или C2). Я думал, что JPA проверит уже существующий экземпляр в текущем сеансе. Но JPA загрузит новый экземпляр C (независимо от того, имеет ли он C1 или C2).
Так что я в конечном итоге с двумя различными экземплярами C.
Мой вопрос: является ли это ожидаемое поведение? Если это так, как я могу примирить экземпляры сущности в сеансе?
веселит
Экземпляр родительского P & dao.getSpecificChild (P) извлекается с использованием того же или другого entitymanager –