我如何在休眠条件中编写以下查询

How Can I write The Following Query In hibernate Criteria

Select * from Table A left join Table B on A.id=B.id and A.langCode='IN';

其中 'IN' 是用户输入的。

Table A 和 Table B 具有 Id 的映射,但两者之间没有与 LangCode 的映射,因为 table B dosent 有一个名为 langCode 的列可以映射,我想在不映射语言代码的情况下使用休眠条件编写以下查询。

Table:员工: EMP_ID - 主键, 姓名 , CONTACT_DETAILS

Table:Employee_Lang: EMP_ID-复合主键, LANG_CODE- 复合主键, 姓名

实际查询:

Select * from Employee Emp left outer join Employee_Lang EmpLang on Emp.EMP_ID=EmpLang.EMP_ID AND EmpLang.LANG_CODE='IN'

我仅将 Emp_Id 映射为休眠中 table 的主键,因此休眠条件将仅应用连接 而不是在 LangCode 上。

注意:-我无法更改 hibernate 映射,只能使用 hibernate Criteria,根据客户要求,请帮我解决这个问题。

例如你有两个模型:

@Entity
class Employee {
  @Id
  private Long id;
  @OneToOne
  private EmployeeLang employeeLang;
  ...
}
@Entity
class EmployeeLang {
  @Id
  private Long id;
  private String langCode;
  @OneToOne
  private Employee employee;
  ...
}

你应该在它们之间有一些映射,然后你可以做下一个标准:

Criteria criteria = session.createCriteria(Employee.class);
criteria.createAlias("employeeLang", "empLang"); // inner join with EmployeeLang
criteria.add(Restrictions.eq("empLang.langCode", "in");

List<Employee> employees = criteria.list();