我想知道是否可以在条件查询期间初始化实体的瞬时属性。
例子
@Entity
public SampleEntity{
@Id
private long id;
[more attributes]
@Transient
private String someTransientString;
[getters and setters]
}
现在,我想编写一个CriteriaQuery,它会加载所有
SampleEntity
并自动将someTransientString
设置为imamightlyfinestring
。我想到的是以下类似的SQL:SELECT ID AS ID, [..], 'imamightilyfinestring' AS SOME_TRANSIENT_STRING FROM SAMPLE_ENTITY
我当然知道,我可以简单地迭代结果集合并手动设置属性,但是我想知道在JPA2中是否有一种方法可以做到这一点。
谢谢 :)
最佳答案
不,您不能在查询中执行此操作。
如果可以在查询之外找出someTransientString的值,则可以使用PostLoad回调(摘自JPA 2.0规范):
只需将以下内容添加到您的实体中:
@PostLoad
protected void initSomeTransientString() {
//Likely some more complex logic to figure out value,
//if it is this simple, just set it directly in field declaration.
someTransientString = "imamightilyfinestring";
}
关于java - 在CriteriaQuery期间初始化JPA实体的瞬时属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10313535/