当前位置: 首页 > 知识库问答 >
问题:

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

鲜于谦
2023-03-14
@Entity
class PersonA{
     String sample_field;
}

@Entity
class Person{
     String id;
     String name;

}
class PersonC
{
   Strind id;
   String address;
}
@SqlResultSetMapping(name="PersonC", 
classes = {
   @ConstructorResult(targetClass = PersonC.class, 
    columns = {@ColumnResult(name="name")
              , @ColumnResult(name="address")
    )}

共有1个答案

云承弼
2023-03-14

@sqlresultsetmapping可以放置在任何实体类中(不要注释POJO-这是行不通的)。在JPA版本2.1中添加了使用@constructorresult到POJO类的映射。与映射一起使用的POJO必须有正确的构造函数。

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

请参考下面的查询用法示例,并据此制定您的情况。

@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();
 类似资料:
  • 问题内容: 我是新手,尝试过使用google,但无法解决我的查询。请帮忙。 我正在尝试在POJO类PersonC中映射两个实体:PersonA和Person 以上两个是jpa的实体。 现在,我想将它们合并为一个pojo类。 尝试下面的代码,但是当我尝试获取“地址/外键”字段时,它不起作用。 我应该在哪里为上面的哪个类定义@SqlResultSetMapping?)}) 问题答案: 可以放在 任何

  • 我正在努力使用jpa Crudepository接口连接两个实体模型。我不知道如何映射两个实体模型并在@query注释中编写查询。这些是我的实体类。我想执行这个查询“从taxi\u driver\u映射中选择dppd.payment\u plan\u id,dppd.attribute\u value,dppd.attribute\u id作为tdm加入driver\u payment\u pla

  • 另一个实体是: 我想编写一个接口,例如

  • 我有两个词A,B。在这个词中A是父词,有下面的表结构。 A1-->Acolumn 甚至我也尝试过使用普通连接。PLS让我知道我错过了什么。 我使用@query来指定query。选择a From TableA a LEFT OUTER JOIN FETCH a.tableAcollection p,其中a.tableacolum=?1和p.tablebcolumn<>p.tablebcolumn。

  • 问题内容: 我想写一个查询。我是Spring Data JPA的新手。我不知道如何为Join查询编写实体。这是一个尝试: 另一个实体是: 我想写一个crudRepository诸如 问题答案: 有关员工拥有一个或多个电话的典型示例,请参阅此Wikibook部分。 对于你的特定示例,如果你想建立关系,则应更改ReleaseDateType模型中的下一个代码: 对于: 在CacheMedia模型中,你

  • AnsprechPartner Lieferant ansprechpartner.java lieferant.java 在我的AnsprechPartner.java中,我是这样做的: 在我的Lieferanten.java中,我是这样做的: