Tom*_*lly 2 java spring hibernate jpa spring-data-jpa
这是我的实体:
@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;
//...
}
Run Code Online (Sandbox Code Playgroud)
在我的存储库中我有:
public interface UserRepository extends JpaRepository<User, Long>{
@Query("SELECT u FROM User u JOIN FETCH u.city")
public List<User> findAllUserForApi();
}
Run Code Online (Sandbox Code Playgroud)
如果表中有任何城市,findAllUserForApi()则显示有关用户的完整信息:
[{"id":1,"name":"John","surname":"Pillman","city":{"id":1,"name":"New York"}]
Run Code Online (Sandbox Code Playgroud)
如果没有城市,我至少想得到[{"id":1,"name":"John","surname":"Pillman","city":null]
但我什么也没有:[]
请帮帮我。
小智 5
鉴于您已经在使用自定义查询,最简单的解决方案是LEFT JOIN FETCH:
@Query("SELECT u FROM User u LEFT JOIN FETCH u.city")
这样所有用户都将被加载,无论他们是否有城市;对于那些拥有城市的人,可以通过 获得user.getCity()。
| 归档时间: |
|
| 查看次数: |
2386 次 |
| 最近记录: |