Java 如何在hibernate条件中编写以下查询

Java 如何在hibernate条件中编写以下查询,java,mysql,hibernate,hibernate-criteria,Java,Mysql,Hibernate,Hibernate Criteria,其中“IN”是来自用户的输入 表A和表B有Id的映射,但两者之间没有LangCode映射,因为表B有一个名为LangCode的列要映射,我想使用hibernate条件编写以下查询,而不映射LangCode 表:雇员: EMP_ID-主键, 名称 联络单位详情 表:雇员_Lang: EMP_ID-复合主键, LANG_代码-复合主键, 名字 实际查询: Select * from Table A left join Table B on A.id=B.id and A.langCode='IN';

其中“IN”是来自用户的输入

表A和表B有Id的映射,但两者之间没有LangCode映射,因为表B有一个名为LangCode的列要映射,我想使用hibernate条件编写以下查询,而不映射LangCode

表:雇员: EMP_ID-主键, 名称 联络单位详情

表:雇员_Lang: EMP_ID-复合主键, LANG_代码-复合主键, 名字

实际查询:

Select * from Table A left join Table B on A.id=B.id and A.langCode='IN';
我只将Emp_Id映射为hibernate中两个表中的主键,因此hibernate条件将只对该表应用联接 而不是在LangCode上


注意:-我无法更改hibernate映射,只能使用hibernate标准,根据客户的要求,请在这方面帮助我。

例如,您有两种型号:

Select * from Employee Emp left outer join Employee_Lang EmpLang on Emp.EMP_ID=EmpLang.EMP_ID AND EmpLang.LANG_CODE='IN'
您应该在它们之间有一些映射,然后可以执行下一个标准:

@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=session.createCriteria(Employee.class);
标准.createAlias(“employeeLang”、“empLang”);//与员工的内部连接
标准。添加(限制条件(“使用语言代码”);
List employees=criteria.List();

你能用字段添加实体A和B代码吗?嗨,我已经添加了更改,你能帮我吗?我的意思是java类A和B你能添加它们吗?实际上这只是我想要实现的目标的一瞥,我正在处理的类与此完全不同,我添加了这些参考数据,因为我不能给出实际的c这里的女士(客户协议)希望你能理解我
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();