gpt4 book ai didi

java - Spring 数据 JPA : How can Query return Non- Entities Objects or List of Objects?

转载 作者:IT老高 更新时间:2023-10-28 20:57:34 24 4
gpt4 key购买 nike

我在我的项目中使用 Spring Data JPA。我正在玩数百万张唱片。我有一个要求,我必须为各种表获取数据并构建一个对象,然后在 UI 上绘制它。现在如何在我的 Spring 数据存储库中实现这一点。我读过它可以通过命名原生查询来实现。

If the named native query does not return an entity or a list of entities, we can map the query result to a correct return type by using the @SqlResultSetMapping annotation.

但是当我尝试使用 @SqlResultSetMapping 时,它正在使用另一个 entityResult。我的意思是,它只是将一些查询结果转换为实体结果集,但我想要一个非实体对象的结果集。

@SqlResultSetMapping(
name="studentPercentile",
entities={
@EntityResult(
entityClass=CustomStudent.class,
fields={
@FieldResult(name="id", column="ID"),
@FieldResult(name="firstName", column="FIRST_NAME"),
@FieldResult(name="lastName", column="LAST_NAME")
}
)
}
)
@NamedNativeQuery(
name="findStudentPercentile",
query="SELECT * FROM STUDENT",
resultSetMapping="studentPercentile")

在上面的示例中,我只是想将学生实体的结果放入另一个不是实体的 pojo 'CustomStudent' 中。 (这个例子我只是为了 POC 目的而执行的,实际用例非常复杂,复杂的查询返回不同的结果集)。

如何实现上述用例?除了使用我的存储库方法返回非实体对象的名称查询之外,还有其他方法吗?

最佳答案

你可以这样做

@NamedQuery(name="findWhatever", query="SELECT new path.to.dto.MyDto(e.id, e.otherProperty) FROM Student e WHERE e.id = ?1")

那么 MyDto 对象只需要一个使用正确字段定义的构造函数,即

public MyDto(String id, String otherProperty) { this.id = id; this.otherProperty = otherProperty; }

关于java - Spring 数据 JPA : How can Query return Non- Entities Objects or List of Objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com