簡體   English   中英

如何在休眠條件中編寫以下查詢

[英]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”的地方。

表A和表B都有ID映射,但是在兩者之間沒有使用LangCode映射,因為表B有一列名為langCode的映射,我想使用休眠條件編寫以下查詢而不映射langcode。

表:員工:EMP_ID-主鍵,NAME,CONTACT_DETAILS

表:Employee_Lang:EMP_ID-復合主鍵,LANG_CODE-復合主鍵,NAME

實際查詢:

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

我只將Emp_Id映射為hibernate中兩個表中的主鍵,因此,休眠條件將僅對該字段應用聯接,而不對LangCode進行聯接。

注意:-我無法更改休眠映射,並且只能根據客戶要求使用休眠條件,請對此提供幫助。

例如,您有兩個模型:

@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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM