【发布时间】:2026-02-10 09:20:03
【问题描述】:
对于任何基本错误,我真的是 hibernate 的新手,所以我有 2 个实体用户和建立,我已经使用休眠将这些实体映射为多对多关系,如下所示:
User.java 实体:
@Entity
@Table
public class User extend AbstractEntity {
@Column(name = "name", length = 255, nullable = false, unique = true)
private String name;
@Column(name = "email", length = 120)
private String email;
@Column(name = "phone")
private String phone;
@ManyToMany
@JoinTable(name= "User_Establishment",
joinColumns = {@JoinColumn(name="user_id") },
inverseJoinColumns = {@JoinColumn(name="establishment_id") })
private List<Establishment> establishments;
public List<Establishment> getEstablishments() {
return establishments;
}
public void setEstablishment(List<Establishment> establishments) {
this.establishments= establishments;
}
}
和Establishment.java 实体:
@Entity
@Table
public class Establishment extend AbstractEntity{
@Column(name="nif", nullable=false, length=10)
private String nif;
@Column(name="code", nullable=false, length=11)
private String code;
@Column(name="name", nullable=false)
private String name;
@Column(name="address")
private String address;
@ManyToMany(mappedBy = "establishments")
private List<User> users;
public List<User> getUser() {
return users;
}
public void setUser(List<User> users) {
this.users= users;
}
}
两个实体都有一个 ID,它只是不存在,因为我扩展了一个具有这些值的抽象类。
它在数据库中创建了一个名为 User_Establishment 的表,如下所示:
|---------------------|------------------|
| user_id | establishment_id |
|---------------------|------------------|
| 12 | 34 |
|---------------------|------------------|
到目前为止一切顺利,我可以使用 seters 和 geters 在表中正确添加值。 但是现在我想使用带有休眠的查询来获取这些值,但我真的不知道该怎么做,因为当我尝试创建查询以访问存储库中的数据时,我不能,因为我没有存储库关联表。
所以给 user_id 作为参数,我想要每个机构 ID,以便从机构表中获取所有内容,并给出机构 ID
有什么办法吗?
谢谢。
【问题讨论】:
-
不确定您要查询什么,您能详细说明一下吗?
-
好吧,对不起,我会详细说明,所以给 user_id 作为参数,我想要每个机构 ID,以便从机构表中获取所有内容,给出机构 ID
-
您应该通过 userId 选择用户,然后您将通过 getEstablishments getter 将所有机构作为一个集合,如下面的@LunaticJape 建议的那样。