【发布时间】:2013-09-11 14:46:29
【问题描述】:
我目前拥有的:
@Entity
public class Payment {
@Id @GeneratedValue
private long id;
@Column(unique = true)
private Date period; // Only used for year and month
...
}
@Entity
public class Department {
@Id @GeneratedValue
private long id;
...
}
支付实体只保存需要由所有部门每年和每月支付一次的默认付款。他们之间不需要任何关系,因为所有部门都支付所有款项。
我想要达到的目标:
我想区分当前共享的付款和其他一些部门特定的付款。因此,部门将能够选择使用所有共享付款(按照目前的设计)或定义自己的付款而不使用任何其他付款。
公司付款应继续以相同的方式工作,我必须确保每个部门的部门付款也是唯一的。
在 OOP 术语中,我认为我需要对以下任何选项进行建模:
可能第一个更合适。
请注意,我无法更改当前识别任何实体的方式。但是,我可以在任何其他字段上添加唯一性。
问题:
- 在 JPA2 中执行此操作的适当方法是什么?
- 付款层次结构是否可行?应该如何映射以确保唯一 字段不冲突?
- 有什么办法可以避免层次结构吗?
【问题讨论】:
-
扩展层次结构选项:这将是一个带有鉴别器 (C|D) 的表,它将同时具有 CompanyPayments 和 DepartmentPayments,因此唯一性将由这对确定:鉴别器列和周期列跨度>
标签: java hibernate jpa mapping jpa-2.0