我如何在休眠条件中编写以下查询
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();
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();