有一种情况是,我有一个本机查询,其中包含两个实体类的数据,如何通过@SqlResultSetMapping将该数据映射到实体类?例如
Native query:- select customer.name, address.area from customer, address where customer.id=address.custid;
2实体类,如客户和地址,名称作为客户中的变量,区域作为地址实体类中的变量。
Customer class:
@Entity
public class Customer {
@Id
private String name;
getters and setters
.....
.....
.....
}
Address Class entity:
@Entity
public class Address{
@Id
private String area;
getters and setters
.....
.....
.....
}
要将本机查询与实体类映射,可以通过在实体中给出@SqlResultSetMap并在nativeQuery中给出映射的名称来完成
Query query = entityManager.createNativeQuery(sbQuery, "checkInfoMapping");
它将检查映射名称并映射到相应的实体类,这可以针对单个实体类来完成。
如果我有来自两个实体类的本机查询的数据,可以这样做吗?如果是,我如何将其映射到具有本机查询的实体类?
最简单的方法是在本机查询中使用JOIN,如下所示。
Native query:-在c.id=a.custid上从客户c加入地址a中选择c.name,a.area
因此,您必须在客户实体上提供结果集映射。
你应该这样做:
@SqlResultSetMapping(
name = "checkInfoMapping",
classes = {
@ConstructorResult(targetClass = ResultInfo.class,
columns = {
@ColumnResult(name = "cust_name", type = String.class),
@ColumnResult(name = "adr_area", type = String.class)
}
)
}
)
@Entity
@Table(name = "TST_CUSTOMER")
public class Customer {
@Id
@Column(name = "cust_id")
private Long id;
@Column(name = "cust_name")
private String name;
...
}
@Entity
@Table(name = "TST_ADDRESS")
public class Address{
@Column(name = "adr_area")
private String area;
@ManyToOne
@JoinColumn(name = "adr_cust_id")
private Customer customer;
...
}
// this is not entity, just dto class
public class ResultInfo
{
private String name;
private String area;
public ResultInfo(String name, String area)
{
this.name = name;
this.area = area;
}
// ...
}
问题是:
List<ResultInfo> resultList = entityManager.createNativeQuery(
"select cust_name, adr_area from TST_CUSTOMER, TST_ADDRESS where TST_CUSTOMER.cust_id = TST_ADDRESS.adr_cust_id",
"checkInfoMapping")
.getResultList();
问题内容: 我正在尝试使用@SqlResultSetMapping和@ConstructorResult将本机查询的结果映射到POJO。这是我的代码: 然后在我的DAO中: 我已经读到JPA 2.1仅支持此功能,但这就是我正在使用的功能。这是我的依赖项: 我发现了一些资源,其中包括:jpa2.1中的@ConstructorResult映射。但是我仍然没有运气。 我想念什么?为什么找不到SqlRes
我正在尝试使用@SQLResultSetMapping和@ConstructorResult将本机查询的结果映射到POJO。下面是我的代码: 我找到了一些参考资料,其中包括JPA2.1中的@ConstructorResult映射。但我还是没有运气。 我错过了什么?为什么找不到SqlResultSetMapping?
使用getObject方法从ResultSet对象检索列时,该类由JDBC驱动程序选择。我正在寻找一种方法来选择在运行时检索列的类。 在下面的示例中,使用变量T作为整数创建类型Class1。 ResultSet类提供了一个名为getObject的方法,该方法接受列参数和类型映射参数。此类型映射仅用于UDT(用户定义的类型)。我需要这个功能应用到基本的SQL类型。我知道我可以使用switch/cas
问题内容: 我用np.save()保存了几个numpy数组,并将它们放在一起非常大。 是否可以将它们全部加载为内存映射文件,然后对它们进行串联和切片,而无需将任何内容都加载到内存中? 问题答案: 使用显然将数组加载到内存中。为避免这种情况,您可以轻松地在新文件中创建一个thrid数组,并从要连接的数组中读取值。以更有效的方式,您还可以将新阵列追加到磁盘上已存在的文件中。 在任何情况下,您都必须为数
从这个问题,有可能注入map与枚举? 例如,我有枚举: 我有一些与实现的接口: 但这样的注入不起作用: 我想自动注入。如何修复它,在spring框架端生成这样的代码?
应用:Spring防尘套 我试图用SqlResultSetMapping和NamedNativeQuery将非实体类映射到JPA存储库。 运行应用程序时出现以下错误: 通过字段'cityAddressRepository'表示不满足的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'cityAddress