我目前拥有的:
@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 中执行此操作的适当方法是什么?
- 付款层次结构是要走的路吗?应该如何映射以确保唯一字段不会发生冲突?
- 有什么办法可以避免等级制度?