如何使用JPA来选择本机表列



我想使用JPA从表中选择几列。在这种情况下,我不会插入完整的实体,而只是插入具有某些Id的几列。

这就是我的方法:

EntityManager em = createEntityManager();
List<Object[]> data = em.createNativeQuery( "SELECT ID, FOREIGN_OBJ_1_ID, FOREIGN_OBJ_2_ID FROM TABLE1" ).getResultList();
em.close();
for ( Object[] row : rentaldata )
{
Long id = ( (BigDecimal) row[0] ).longValue();
Long fk_1 = ((Long) row[1]);
Long fk_2 = ((Long) row[2]);
DataObject do = new DataObject(id, fk_1, fk_2, ...);
...

我也试过用JPA选择新的。。。。但我想确保没有创建任何对象。所以我的问题是:有没有更好的方法来加载几个列,并将它们放入这样的对象中?

谢谢,Thorsten

您可以使用SqlResultMapping。试试这样的东西:

Query q = em.createNativeQuery(
"SELECT o.id AS order_id, " +
"o.quantity AS order_quantity, " +
"o.item AS order_item, " +
"i.name AS item_name, " +
"FROM Order o, Item i " +
"WHERE (order_quantity > 25) AND (order_item = i.id)",
"OrderResults");
@SqlResultSetMapping(name="OrderResults", 
entities={ 
@EntityResult(entityClass=com.acme.Order.class, fields={
@FieldResult(name="id", column="order_id"),
@FieldResult(name="quantity", column="order_quantity"), 
@FieldResult(name="item", column="order_item")})},
columns={
@ColumnResult(name="item_name")}
)

更多详情点击此处

最新更新