Join Spring数据JPA中的联接表问题

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

我正在尝试创建一个包含数据的视图,该视图将两个表组合在一起。我使用spring数据JPA join成功地实现了连接,并正确显示了数据。这里我的问题是,当我仅从一个表调用
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();
        }