Вопрос

Что на самом деле делает CascadeType.REFRESH ?

Определение для этого

  

Когда мы обновляем сущность, все сущности, содержащиеся в этом поле, тоже обновляются

но что это означает на практике? Может ли кто-нибудь дать мне простой пример?

Это было полезно?

Решение

Отдельные описания CascadeType могут быть немного запутанными, но есть простой способ понять это из общего случая.

Для любого из значений CascadeType это означает, что если операция X вызывается для экземпляра, использующего интерфейс EntityManager , и этот экземпляр имеет ссылки на другие экземпляры объекта, и для этой ассоциации определен CascadeType.X , тогда операция EntityManager также будет применена к этому связанному объекту.

Поэтому EntityManager.refresh () определяется как:

  

Обновить состояние экземпляра с   внесение изменений в базу данных   субъекту, если таковой имеется.

Таким образом, если сущность A имеет ссылку на сущность B, и эта ссылка аннотируется с помощью @ CascadeType.REFRESH и вызывается EntityManager.refresh (A) , тогда EntityManager.refresh (B) также вызывается неявно.

Другие советы

Поиск по обновлению: Управляемые объекты могут быть перезагружены из базы данных с помощью метода refresh:

Содержимое управляемого объекта в памяти отбрасывается (включая изменения, если таковые имеются) и заменяется данными, полученными из базы данных. Это может быть полезно для обеспечения того, чтобы приложение имело дело с самой последней версией объекта-сущности, на случай, если оно могло быть изменено другим EntityManager с момента его получения.

Источник: http://www.objectdb.com/java/jpa/persistence/ получить

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top