我在DB中有两个表和两个实体。 HtmlDesc和HtmlData。
两者都具有相同的ID。 有没有办法在Hibernate中创建compund / merged实体而不重复来自这两个实体的代码。 我想执行法令
Query<Html> query = getCurrentSession().createNativeQuery(
"SELECT * FROM HtmlDesc A, HtmlData B WHERE A.linkId = B.linkId",
Html.class);
return query.getResultList();
映射到新实体Html = HtmlDesc + HtmlData。 是否有一些智能代码来编写这样的实体?
之后我找到了相关主题,如果有人遇到类似问题会有所帮助: JPA- Joining two tables in non-entity class
答案 0 :(得分:1)
如果我对你的问题的理解是正确的,那么@SqlResultSetMapping就是你要找的。
这将提供自定义映射,其中实体管理器将能够将对象列表映射到特定实体
作为案例的例子
List<Object[]> results = em.createNativeQuery("select * from html h JOIN htmla ha ON h.id=ha.id","HtmlaHtmlbMapping").getResultList();
@SqlResultSetMapping(
name="HtmlaHtmlbMapping",
entities = {
@EntityResult(
entityClass = HTML.class,
fields = {
@FieldResult(name="id",column = "id"),
@FieldResult(name = "detail", column = "detail")}),
@EntityResult(
entityClass = HTMLA.class,
fields = {
@FieldResult(name="id",column = "id"),
@FieldResult(name = "name", column = "name")})})