我無法描述我的問題,我用例子再次嘗試:Hibernate的一對多的關係與非唯一鍵
我有兩個實體(表):部和人。兩個表都有一個字段代碼這是不是唯一的。
我該如何才能定義 manyToMany 雙向關係這些表之間?
- Departmen具有收藏者返回的所有實體與Person.CODE EQ Department.CODE
- 合作伙伴具有收集部門返回的所有實體與Department.CODE EQ Partner.CODE
我需要的關係定義 - 不需要sql或hpql查詢。
---------原來的問題-------
我需要創建Hibernate的關係,一個部門和個人(一個部門有很多的人)之間有許多。部門和人員有時間有效性(validFrom,validTill)
class Department {
Long id;
String code;
String name;
Date validFrom;
Date validTill;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "departmentId")
@OnDelete(action = OnDeleteAction.CASCADE)
private Set<Person> persons = new HashSet<Person>();
}
class Person {
Long id;
String name;
String surname;
Date validFrom;
Date validTill;
}
沒有ORM(休眠)很容易在指定的日期來選擇特定的部門人數:
select P.* from Person P, Deparment d
where d.code = ? and
p.department_id = d.department_id and
? between d.validFrom and d.validTill and
? between p.validFrom and p.validTill
該關係必須使用非唯一鍵(CODE)而不是部門ID。
是否有可能做類似的休眠?
我不需要分開的對象並自己構造查詢。
我想使用的ORM提供的所有功能(延遲加載,cascase堅持...)
請添加映射 – ssedano
您只想檢索數據,或者插入一個與現有更新所有關係相同的代碼的新部門? – ssedano
兩者。檢索數據,當我插入一個新部門時,我想用CODE爲其分配屬於部門的所有人員。 – Vlada