Когда я использую JPR Query getResultList (), результаты отсоединяются или управляются? - PullRequest
14 голосов
/ 06 февраля 2012

Когда у меня есть JPA-запрос, который я вызываю .getResultList (), он возвращает мне список объектов.Объекты в этом списке управляются или отделены?То есть мне нужно беспокоиться о том, чтобы объединить или сохранить их позже, если я внесу в них изменения, или эти изменения будут получены автоматически?

Ответы [ 3 ]

13 голосов
/ 06 февраля 2012

Да, объекты, возвращенные из .getResultList(), управляются.

Когда вы вносите изменения в управляемые объекты, вы не беспокоитесь о слиянии, так как эти изменения будут автоматически восприниматься EntityManager.

Управляемые объекты будут отсоединены, когда EntityManager, используемый для загрузки этого объекта, будет close () , clear () или detach () . Отдельные объекты больше не управляются, и вы должны выполнить объединение, чтобы позволить EntityManager забрать изменения.

3 голосов
/ 26 марта 2013

Они будут управляться, если вы в настоящее время находитесь в транзакции, но если вы не делаете этого (например, если вы аннотировали свою операцию с помощью TransactionAttributeType.NOT_SUPPORTED или TransactionAttributeType.NEVER), вашими объектами не будут управлять.

2 голосов
/ 06 февраля 2012

Из моего опыта возвращаемые значения getResultList () прилагаются. То есть вам не нужно сохранять их вручную, если вы вносите в них изменения в одной и той же транзакции.

...