首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写java hibernate多对多关系检索查询

如何编写java hibernate多对多关系检索查询
EN

Stack Overflow用户
提问于 2012-07-02 16:24:57
回答 2查看 2.6K关注 0票数 1

我有两个表,如下所示。我想要编写一个查询来获取特定组的所有联系人。(根据组id)。请帮帮我。提前谢谢。

1.此contacts表具有多个与contact groups表的多对多关系。

代码语言:javascript
复制
@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;
}


}
EN

回答 2

Stack Overflow用户

发布于 2012-07-02 16:38:21

代码语言:javascript
复制
select c from Contacts c 
inner join c.contactGroups group
where group.id = :groupId

但如果是这样的话一切都会更简单

您将实体命名为ContactGroupContact (没有最终的s)

  • you,将关联映射为双向关联)。它允许通过ID获取ContactGroup,只需调用getContacts()来获取其联系人。
票数 2
EN

Stack Overflow用户

发布于 2012-07-02 16:31:22

代码语言:javascript
复制
select c from Contacts c, ContactGroups g
where c.contactGroups.id = g.id
    and g.id = 'whatever id you want'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11290096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档