gpt4 book ai didi

hibernate - spring jpa嵌套投影生成不正确的查询

转载 作者:行者123 更新时间:2023-12-03 14:18:25 39 4
gpt4 key购买 nike

让我们考虑这些实体

@Entity
public class Room{

@Id
private Integer id;

private String number;

private String floor;

@ManyToOne
private RoomType roomType;

// Setters & Getters
}

@Entity
public class RoomType{

@Id
private Integer id;

private String name;

private String description;

private Boolean enabled;

// Setters & Getters
}

还有这个与存储库类一起投影的接口(interface)

public interface RoomList{

public Number getId();

public String getNumber();

public RoomType getRoomType();

interface RoomType {
String getName();
}

}

@Repository
public interface RoomRepository extends JpaRepository<Room,Integer>{

public Collection<RoomList> findAllProjectedBy();

}

现在,如果我查看生成的 SQL
select
room0_.id as col_0_0_,
room0_.number as col_1_0_,
roomtype1_.id as id1_3_,
roomtype1_.description as descript2_3_,
roomtype1_.enabled as isActive3_3_,
roomtype1_.name as name5_3_
from
Room room0_
inner join
roomType roomtype1_
on room0_.roomType_id=roomtype1_.id

生成的查询应该是这样的
select
room0_.id as col_0_0_,
room0_.number as col_1_0_,
roomtype1_.name as name5_3_
from
Room room0_
inner join
roomType roomtype1_
on room0_.roomType_id=roomtype1_.id

有人可以解释这种行为还是这是一个错误?还有什么其他选择我们可以实现这种结果。我已经尝试过 JPA 实体图,但 hibernate 中尚未完全支持图形类型获取,我也不想使用构造函数 jpql 查询。谢谢 !

最佳答案

如果理解正确,则担心选择的属性/列比填充预测所需的更多。

正如我刚刚在 issue DATAJPA-1218 中描述的那样这就是当前 Spring Data 中预测的工作方式。引用实体的属性不限于投影中使用的属性。

关于hibernate - spring jpa嵌套投影生成不正确的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47159647/

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