栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JPA-在非实体类中联接两个表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JPA-在非实体类中联接两个表

@SqlResultSetMapping
可以放在任何实体类中(不要为POJO注释-它不起作用)。
@ConstructorResult
在JPA 2.1版中添加了映射到POJO类。与映射一起使用的POJO必须具有正确的构造函数。

必须使用

ConstructorResult
批注中的
columns
元素以与构造函数的参数列表相同的顺序指定与预期构造函数的参数对应的所有列。

请参考以下查询用法示例,并据此解决您的问题。

@Entitypublic class Address {    @Id int id;      String street;}@SqlResultSetMapping(name="PersonDTOMapping",    classes = {     @ConstructorResult(targetClass = PersonDTO.class,       columns = {@ColumnResult(name="name"), @ColumnResult(name="street")}     )})@Entitypublic class Person {    @Id int id;    String name;    Address address;  }  public class PersonDTO {    String name;    String street;    public PersonDTO(String name, String street) {        this.name = name;        this.street = street;    }}// usageQuery query = em.createNativeQuery(    "SELECt p.name AS name, a.street AS street FROM Person p, Address a WHERe p.address_id=a.id",    "PersonDTOMapping");List<PersonDTO> result = query.getResultList();

请注意,别名(AS name和AS street)必须与@ColumnResults 中的名称匹配。该示例已针对Ecliselink 2.5.1进行了测试。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号