想象一下,事件实体引用了一个状态实体:
@H_403_2@@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;
}
状态映射到一个小表’状态’.状态是典型的参考数据/查找实体.
@H_403_2@code label ----- -------------- CRD Created ITD Initiated PSD Paused CCD Cancelled ABD Aborted我不知道如果将状态建模为一个实体是个好主意.感觉更像是常数的枚举…
通过将状态映射为实体,我可以使用Java代码中的状态对象,并且状态值同样存在于数据库中.这对报告很好.
另一方面,如果我想为某个事件设置一个特定的状态,我不能简单地分配我所记住的常数状态.我必须首先查找正确的实体:
@H_403_2@event.setStatus(entityManager.find(Status.class,"CRD"))我可以避免上述代码片段吗?我害怕一个表现的惩罚,它看起来很沉重…
>我必须用只读属性来调整东西吗?
>我可以预取这些查找实体并将其用作常量吗?
>我是否错过了关键的JPA功能?
> …?
欢迎所有意见/建议/建议!
谢谢!
J.