gpt4 book ai didi

java - 如何对可以为空的列使用 hibernate 延迟加载

转载 作者:行者123 更新时间:2023-11-30 06:09:22 25 4
gpt4 key购买 nike

这是我的实体:

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "name")
private String name;

@Column(name = "surname")
private String surname;


@ManyToOne(fetch = FetchType.LAZY, cascade=CascadeType.MERGE)
@JoinColumn(name = "id_city")
private City city;
//...

}

在我的存储库中我有:

public interface UserRepository extends JpaRepository<User, Long>{

@Query("SELECT u FROM User u JOIN FETCH u.city")
public List<User> findAllUserForApi();

}

如果表中有任何城市,findAllUserForApi() 会显示有关用户的完整信息:

[{"id":1,"name":"John","surname":"Pillman","city":{"id":1,"name":"New York"}]

如果没有城市,我想至少得到 [{"id":1,"name":"John","surname":"Pillman","city":null]但是我什么都没有:[]

请帮帮我。

最佳答案

鉴于您已经在使用自定义查询,最简单的解决方案是LEFT JOIN FETCH:
@Query("SELECT u FROM User u LEFT JOIN FETCH u.city")
这样无论有没有城市,所有用户都会被加载;对于那些拥有城市的人,它将通过 user.getCity() 获得。

关于java - 如何对可以为空的列使用 hibernate 延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077562/

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