【发布时间】:2014-01-08 21:02:26
【问题描述】:
我们如何从选择查询中加载 JPA 中的瞬态字段。
例如我有这个查询:
SELECT table1.*, (SELECT SUM(field) from table2 WHERE theField=table1.flag) as total FROM table1;
所以在这里我需要一个名为“total”的临时字段在我的 bean 中。
但在 JPA 中似乎是不可能的
【问题讨论】:
我们如何从选择查询中加载 JPA 中的瞬态字段。
例如我有这个查询:
SELECT table1.*, (SELECT SUM(field) from table2 WHERE theField=table1.flag) as total FROM table1;
所以在这里我需要一个名为“total”的临时字段在我的 bean 中。
但在 JPA 中似乎是不可能的
【问题讨论】:
您可以在JPQL 中使用constructor
查询:
SELECT NEW com.foo.entities.Table1(table1.*, (SELECT SUM(field) from table2 WHERE theField=table1.flag) as total) FROM table1;
实体:
@Entity
public class Table1{
// .. other columns
@Transient
int total;
// table1Field1,table1Field2 etc. map to your table1.* coulmns
public Table1(String table1Field1,int table1Field2,int total){
// ..other assignments here
this.total = total; // transient assignment here
}
}
【讨论】: