不带关系实体的java JPA存储库选择
我有两个具有关系的实体(hibernate)。当我通过JPA repository获取实体时,然后休眠对两个实体进行“选择”。如何通过一次选择获得实体(此时我不需要第二个实体)
对不起,我的英语和技术语言-我是初学者
编辑
用户:
@Entity
public class User {
@Id
@GeneratedValue
private int id;
private String name;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER)
private List<Medicament> medicaments;
//and others and getters and setters
}
药剂:
@Entity
public class Medicament {
@Id
@GeneratedValue
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
//and others and getters and setters
}
我从autowired接口UserRepository调用方法:
public interface UserRepository extends JpaRepository<User, Integer>{
@Query("select u from User u where name = :name")
User findByNameQuery(@Param("name") String name);
User findByName(String name);
}
方法findByNameQuery
和findByName
都进行多重选择
# 1 楼答案
改变
到
或者根本不指定FetchType。
@OneToMany
和@ManyToMany
的默认值是LAZY
,而EAGER
的默认值是@OneToOne
# 2 楼答案
@Tomas Kralik它在工作!谢谢
你能告诉我什么更好用吗
具有延迟提取的实体,并在控制器中使用此实体:
或者使用“快速获取”并使用以下代码:
或者,如果需要的话,我可以更改它(一种方式是将实体与fetch-EAGER一起使用,另一种方式是将同一实体与fetch-LAZY一起使用)
编辑:
我找到了解决办法: 我已将查询更改为:
和实体用户具有抓取延迟,在我使用的控制器中: