Что CascadeType.Обновить на самом деле сделать?


что значит CascadeType.REFRESH на самом деле делать?

определение для него

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

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

2 67

2 ответа:

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

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

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

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

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

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

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

источник: http://www.objectdb.com/java/jpa/persistence/retrieve