java – JPA-在非实体类中连接两个表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – JPA-在非实体类中连接两个表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1759字,纯文字阅读大概需要3分钟。
内容图文
![java – JPA-在非实体类中连接两个表](/upload/InfoBanner/zyjiaocheng/706/5e11eae85f19493d80581ce9078dca7f.jpg)
我是新手,试图谷歌,但我无法解决我的问题.
请帮忙.
我试图在我的POJO类PersonC中映射两个实体:PersonA和Person
@Entity
class PersonA{
String sample_field;
}
@Entity
class Person{
String id;
String name;
}
以上两个是jpa的实体.
现在我想将它们合并到一个pojo类中.
class PersonC
{
Strind id;
String address;
}
尝试下面的代码,但当我尝试获取地址/外键字段时,它不起作用.
@SqlResultSetMapping(name="PersonC",
classes = {
@ConstructorResult(targetClass = PersonC.class,
columns = {@ColumnResult(name="name")
, @ColumnResult(name="address")
)}
我应该在哪里定义@SqlResultSetMapping,从上面的哪个类?
)
})
解决方法:
@SqlResultSetMapping可以放在任何实体类中(不要注释POJO – 它不起作用).在JPA 2.1版中添加了使用@ConstructorResult映射到POJO类.与映射一起使用的POJO必须具有正确的构造函数.
All columns corresponding to arguments of the intended constructor must be specified using the columns element of the ConstructorResult annotation in the same order as that of the argument list of the constructor.
请参考以下示例查询用法并相应地计算您的案例.
@Entity
public class Address {
@Id int id;
String street;
}
@SqlResultSetMapping(name="PersonDTOMapping",
classes = {
@ConstructorResult(targetClass = PersonDTO.class,
columns = {@ColumnResult(name="name"), @ColumnResult(name="street")}
)}
)
@Entity
public 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;
}
}
// usage
Query 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名称和AS街道)必须与@ColumnResults中的名称匹配.
该示例针对Ecliselink 2.5.1进行了测试.
内容总结
以上是互联网集市为您收集整理的java – JPA-在非实体类中连接两个表全部内容,希望文章能够帮你解决java – JPA-在非实体类中连接两个表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。