#java #hibernate
#java #спящий режим
Вопрос:
Если у меня есть две сущности:
@Entity
@Table(name="PARENT_ENTITY")
public class ParentEntity {
@Id
@Column(name="ID")
private Integer id;
// ... Other fields
@Column(name="COLUMN_2")
private String column2;
// ... Other fields
// Getters and setters
}
@Entity
@Table(name="CHILD_ENTITY")
public class ChildEntity {
@Id
@Column(name="ID")
private Integer id;
@Column(name="PARENT_ID")
private Integer parentId;
// ... Other fields
@Formula("(select COLUMN_2 from {schema}.PARENT_ENTITY p where p.ID = PARENT_ID)")
private String column2;
// Getters and setters
}
Когда я сохраняю экземпляр ChildEntity , свойство @Formula не заполняется:
session.saveOrUpdate(childEntity)
childEntity.getColumn2(); // this equals ""
childEntity.postValidate() // validation that relies on @Formula values
// I want to persist if validation succeeds, but not persist if validation fails
session.flush()
Есть ли эффективный способ сделать это, не выходя и не запрашивая PARENT_ENTITY каждый раз?
Ответ №1:
Вы можете выполнить запрос через, например entityManager.createNativeQuery
, или, возможно, использовать entityManager.refresh
для обновления объекта.
Комментарии:
1. session.refresh() — это то, что я искал, спасибо.