【发布时间】:2011-04-06 12:46:17
【问题描述】:
想象一下,一个 Event 实体引用了一个 Status 实体:
@Entity
@Table(name = "event")
public class Event()
{
@Id
@Column(name = "id", nullable = false)
private long id;
...
@ManyToOne
@JoinColumn(name = "status_code", nullable = false)
private Status status;
}
@Entity
@Table(name = "status")
public class Status()
{
@Id
@Column(name = "code", nullable = false)
private String code;
@Column(name = "label", nullable = false, updatable = false)
private String label;
}
Status 映射到一个小表“status”。 Status是典型的参考数据/查找Entity。
code label
----- --------------
CRD Created
ITD Initiated
PSD Paused
CCD Cancelled
ABD Aborted
我不确定将 Status 建模为实体是否是个好主意。感觉更像是常量的枚举……
通过将Status 映射为实体,我可以在Java 代码中使用Status 对象,并且Status 值同样存在于数据库中。这有利于报告。
另一方面,如果我想为一个事件设置一个特定的状态,我不能简单地分配我想到的恒定状态。我必须先查找正确的实体:
event.setStatus(entityManager.find(Status.class, "CRD"))
我可以避免上面的代码片段吗?我害怕性能损失,而且看起来很重......
- 我必须调整只读属性吗?
- 我可以预取这些查找实体并将它们用作常量吗?
- 我错过了一个重要的 JPA 功能吗?
- ...?
欢迎所有意见/建议/推荐!
谢谢! J.
【问题讨论】:
标签: java hibernate orm jpa jakarta-ee