【发布时间】:2021-11-23 06:00:27
【问题描述】:
我想知道是否有可能(以及它是否是好方法)将 pojo 中本机查询的 sql 结果与其属性中的其他 pojo 映射。 我正在寻找类似的东西:
ResultPojo 类
public class ResultPojo {
private MyPojo myPojo;
private Integer firstSimpleAttribute;
private Integer secondSimpleAttribute;
private Double thirdSimpleAttribute;
// Empty Constructor + Constructor with fields + Getter + Setter
}
MyPojo 类
public class MyPojo {
private Long id;
private String label;
private MySubPojo mySubPojo;
// Empty Constructor + Constructor with fields + Getter + Setter
}
MySubPojo 类
public class MySubPojo {
private String text;
// Empty Constructor + Constructor with fields + Getter + Setter
}
映射部分
@SqlResultSetMapping(
name = "CustomMapping",
classes={
@ConstructorResult(
targetClass=MyPojo.class,
columns={
@ColumnResult(name="id", type=Long.class),
@ColumnResult(name="label", type=String.class),
@ColumnResult(name="mySubPojo", type=MySubPojo.class)
}
)
},
columns = {
@ColumnResult(name = "firstSimpleAttribute", type = Integer.class),
@ColumnResult(name = "secondSimpleAttribute", type = Integer.class),
@ColumnResult(name = "thirdSimpleAttribute", type = Double.class)
}
)
本机查询
Query query = this.entityManager.createNativeQuery(
"SELECT r.*, me.id, me.label, mse.*
FROM result r
INNER JOIN my_entity me ON r.id_my_entity = me.id_my_entity
INNER JOIN my_sub_entity mse ON me.id_my_sub_entity = mse.id_my_sub_entity",
"CustomMapping");
List<Object[]> result = query.getResultList();
// Convert Object[] to List<ResultPojo>
当我这样做时,由于@ColumnResult(name="mySubPojo", type=MySubPojo.class) 行,我获得了NullPointerException。有没有办法管理这种映射?
【问题讨论】:
标签: hibernate jpa spring-data-jpa nativequery