【发布时间】:2017-12-10 03:50:24
【问题描述】:
我正在尝试创建一个包含两个表的数据视图。我通过使用spring data JPA join成功实现了连接并且数据正确显示。这里我的问题是,当我只从一个表调用findAll() 方法时,它还返回所有数据,包括连接表,
我加入了表用户模型类,如:
@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() {
}
}
我的第二个模型特权就像,
@Entity
@Table(name = "Privillages")
public class Privillages implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer Id;
@Column(name = "pname")
public String pname;
@ManyToOne(optional = false)
@JoinColumn(name = "pid", referencedColumnName = "privid")
public Users pid;
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public Users getPid() {
return pid;
}
public void setPid(Users pid) {
this.pid = pid;
}
public Privillages(){
}
}
而存储库包含,
@Query("select u from Users u JOIN FETCH u.priviJoin p")
Set<Users> findByUsername();
这些都是我的代码,我在这里添加。问题是,join 可以正常使用预期的结果集。但是当我调用 findAll() 方法时,它会返回所有结构,包括两个连接表。
我把我的 findAll 函数称为,
@RequestMapping("/check")
public List<Users> check() {
return (List<Users>) userRepo.findAll();
}
但结果和我之前提到的一样。这里我添加了它的截图,
在这个图中我们可以看到它返回了两个表的值而不是用户表的数据。
为什么会这样?
【问题讨论】:
标签: join spring-data