您的位置:首页 > 移动开发

【JPA】JPA本地查询注解SqlResultSetMapping的使用

2013-03-04 21:45 351 查看
配置最后的形式:

@SqlResultSetMapping
(
name = "ItemResults",
entities = {
@EntityResult(
entityClass = Item.class, //就是当前这个类的名字
fields = {
@FieldResult(name = "id", column = "id"),
@FieldResult(name = "itemId", column = "item_id"),
}
)
},
columns = {
@ColumnResult(name = "item_id")
}
)
@Entity
@Table(name="item_permission")
public class Item implements Serializable {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private String id;

@Column(name="item_id")
private Integer itemId;

public Item(){}

}
查询

public ItemDAO{

ItemPermissionDAO dao = new ItemPermissionDAO();
Query query = dao.getEntityManager().createNativeQuery(
"select * from item_permission", "ItemResults");
@SuppressWarnings("unchecked")
List<Object[]> items = query.getResultList();
for (Object[] item : items) {
System.out.println(item[1]);
}

}

它返回的格式是Object[]的数组形式

{ [, ] ,[, ] }

而且需要注意的是:

@EntityResult(
entityClass = Item.class, //就是当前这个类的名字
fields = {
@FieldResult(name = "id", column = "id"),
@FieldResult(name = "itemId", column = "item_id"),
}
)
其中注解FieldResult的配置必须是整个entity的所有属性的配置。在当前中属性有两个一个是id,另一个是itemId。所以FieldResult有两个。如果不写全的话,就会异常抛出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA JPA