我有下面指定的两个表。我想编写一个查询以获取特定组的所有联系人。(根据组ID)。请帮我。
提前致谢。
1.该联系人表,它与联系人组表有很多关系。
@Entity
@Table(name="contacts")
public class Contacts implements Serializable {
private Long id;
private String userId;
private String emailId;
private Set<ContactGroups> contactGroups;
private String firstName;
private String lastName;
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="user_id")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name="email_id")
public String getEmailId() {
return emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
@ManyToMany(targetEntity = ContactGroups.class, cascade = {CascadeType.ALL},fetch=FetchType.EAGER)
@JoinTable(name="contact_group",
joinColumns=@JoinColumn(name="c_id", referencedColumnName="id"),
inverseJoinColumns=@JoinColumn(name="g_id", referencedColumnName="id")
)
public Set<ContactGroups> getContactGroups() {
return contactGroups;
}
public void setContactGroups(Set<ContactGroups> contactGroups) {
this.contactGroups = contactGroups;
}
@Column(name="first_name")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@Column(name="last_name")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
@Entity
@Table(name="contact_groups")
public class ContactGroups implements Serializable{
private Long id;
private String groupName;
private String userName;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name="user_name")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name="group_name")
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
}
最佳答案
select c from Contacts c
inner join c.contactGroups group
where group.id = :groupId
但是如果
您将实体命名为
ContactGroup
和Contact
(没有最后一个s
)您将关联映射为双向关联。这将允许通过ID获取
ContactGroup
,只需调用getContacts()
即可获取其联系人。关于java - 如何编写Java hibernate 多对多关系检索查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11290096/