我正在使用带有derby数据库的JPA.我想从同一个表中检索两个完全不同的屏幕上的两个不同的结果集.
屏幕1使用"ScannerReport"bean显示值.
屏幕2将显示ScannerSummaryReport bean的值.
两个bean都需要来自同一个实体"Scanner"的数据,如下面的代码所示.
如何为两个不同的结果集定义结果集映射到实体,其中包含不同的列
A ---> Query query = em.createNativeQuery(<query for scanner report goes here >,"ScannerReport");
query.getResultList();
Run Code Online (Sandbox Code Playgroud)
现在A将执行并实例化ScannerReport类的对象,并用数据填充它.
B ---> Query query = em.createNativeQuery(<query for scanner summary report goes here>,"ScannerSummaryReport");
query.getResultList();
Run Code Online (Sandbox Code Playgroud)
我想以某种方式让JPA知道当我执行B时,现在它需要实例化一个不同类的对象,让我们说ScannerSummaryReport用不同的QUERY(写入计算平均值和总数)中的数据填充它并返回结果.再次请不要两个查询都来自同一个实体Scanner ..
@SqlResultSetMapping(
name="ScannerReport",
classes={
@ConstructorResult(
targetClass=com.beans.ScannerReport.class,
columns={
@ColumnResult(name="scanYear", type=Integer.class),
@ColumnResult(name="julianDay", type=Integer.class),
@ColumnResult(name="scannerId", type=String.class),
@ColumnResult(name="startTime", type=Long.class),
@ColumnResult(name="endTime", type=Long.class),
@ColumnResult(name="scanTime", type=Long.class),
}
)
}
)
@Entity
public class Scanner {
// Class implementation goes here
}
Run Code Online (Sandbox Code Playgroud)
因此,只需使用@SqlResultSetMappings注释定义两个SqlResultSetMappings,每个查询一个.有关 示例,请参见http://www.datanucleus.org/products/accessplatform_4_0/jpa/annotations.html#SqlResultSetMappings
| 归档时间: |
|
| 查看次数: |
7311 次 |
| 最近记录: |