【问题标题】:hibernate how manytone query return all the values from primary table休眠多少音查询返回主表中的所有值
【发布时间】:2013-09-27 01:31:39
【问题描述】:

我有以下 2 个类 Employee 和 Phonenumber,员工和 phonenumber 之间存在一对多关系: 员工:

@Entity
@Table(name="employee")
public class Employee
@Id
@GeneratedValue
private Integer id;

@OneToMany(fetch = FetchType.LAZY, mappedBy="employee_id")
@JoinColumn(name = "ID")
private Set<PhoneNumber> phonenumbers = new HashSet<PhoneNumber>(0);

public Set<PhoneNumber> getPhonenumbers() {
return phonenumbers; 
}

public void setPhoneNumbers(Set<PhoneNumber> phonenumbers) {
this.phonenumbers = phonenumbers; 
}

电话号码 @实体 @Table(name="phone_number") 公共类电话号码 {

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "employee_id")
private Employee employeeid;

public Employee getEmployeeid() {
return this.employeeid;
}

public void setEmployeeid(Employee employeeid) {
this.employeeid = employeeid;
}

1) employee
columns:
id
name

2) phone_number
columns:
employee_id(FK)
phone_number_type
phone_number

我想执行一个查询,我可以在其中搜索员工可能拥有的电话号码并返回所有数据。基本上,如果我搜索电话号码,我想获取该员工以及该员工的所有电话号码。如果出于某种原因 2 名员工共用一部电话,我想返回这两名员工的所有信息。我使用了以下示例查询,但它没有返回员工拥有的所有电话号码。

String key = new String("phone_number_type");
String value = new String("phone_number");

Criteria criteria = getCurrentSession().createCriteria(Employee.class)
                    .add(Restrictions.eq(key, search.getPhonenNumbertype().toString()))
                    .add(Restrictions.eq(value, search.getPhoneNumber()));

return (List<Employee>) criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();

我需要创建自定义 HQL 来执行此操作吗?

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    您可以按照标准以及在 HQl 中执行此操作。以下 hql 将返回您的预期结果。 从 PhoneNumber 中选择employeeId.id,employeeId.name,其中number=mobile。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 2014-09-25
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多