Join Spring数据JPA中的联接表问题
我正在尝试创建一个包含数据的视图,该视图将两个表组合在一起。我使用spring数据JPA join成功地实现了连接,并正确显示了数据。这里我的问题是,当我仅从一个表调用Join Spring数据JPA中的联接表问题,join,spring-data,Join,Spring Data,我正在尝试创建一个包含数据的视图,该视图将两个表组合在一起。我使用spring数据JPA join成功地实现了连接,并正确显示了数据。这里我的问题是,当我仅从一个表调用findAll()方法时,它也返回所有数据,包括联接表 我加入了table Users模型类,如下所示: @Entity @Table(name = "users") public class Users implements Serializable { @Id @GeneratedValue(strategy = Gener
findAll()
方法时,它也返回所有数据,包括联接表
我加入了table Users模型类,如下所示:
@Entity
@Table(name = "users")
public class Users implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "username")
public String username;
@Column(name = "password")
public String password;
@Column(name = "privid")
public Integer privid;
@OneToMany(cascade = CascadeType.ALL,mappedBy="pid")
public Set<Privillages> priviJoin;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getPrivid() {
return privid;
}
public void setPrivid(Integer privid) {
this.privid = privid;
}
public Set<Privillages> getPriviJoin() {
return priviJoin;
}
public void setPriviJoin(Set<Privillages> priviJoin) {
this.priviJoin = priviJoin;
}
public Users() {
}
}
以及包含
@Query("select u from Users u JOIN FETCH u.priviJoin p")
Set<Users> findByUsername();
@Query(“从用户中选择u加入获取u.priviJoin p”)
设置findByUsername();
这些都是我的代码,我在这里补充道。问题是,join可以正确地使用预期的resultset。但当我调用findAll()方法时,它返回所有结构,包括两个联接表
我调用了findAll函数
@RequestMapping("/check")
public List<Users> check() {
return (List<Users>) userRepo.findAll();
}
@RequestMapping(“/check”)
公共列表检查(){
return(List)userRepo.findAll();
}
但结果和我之前提到的一样。这里我添加了它的截图
在这个图中,我们可以看到它返回两个表值,而不是用户表数据
为什么会发生这种情况?您定义了域类型
用户
来包含引用,以便按照指定加载它
如果您想要类似于Users
对象但没有引用的对象,则有两个选项:
Users
类型更改为不包含引用用户
,但不带引用。有多种方法可以做到这一点,但在当前情况下,最简单和最有用的方法可能是使用投影。看@RequestMapping("/check")
public List<Users> check() {
return (List<Users>) userRepo.findAll();
}