JPA @ManyToOne关系:不要插入新实体吗?

时间:2018-02-04 07:02:06

标签: java jpa

我正在使用JPA来建模和持久化我的实体。 我有几个"参考"简单地存在于数据库中并在具有@ManyToOne关系的许多实体中使用的实体。只应查询,不更新或插入这些参考实体。

例如,我的 ReferenceCurrency 实体包含(" EUR"," Euro")和(" USD",& #34;美元")。我不想在我的系统中获得新货币,因为有人写了像#USF")的错字。

示例实体:

@Entity
@Table(name = "CURRENCY")
public class ReferenceCurrency implements Serializable {
    @Id
    @NotNull
    @Size(min = 1, max = 3)
    @Column(name = "ID")
    private String id;

    @Size(max = 50)
    @Column(name = "DSC")
    private String description;

    /* hashCode() + equals() */
}

@Entity
@Table(name = "ENTITY")
public class EntityA implements Serializable {
    @Id
    @NotNull
    @Size(min = 1, max = 3)
    @Column(name = "ID")
    private String id;

    @JoinColumn(name = "CURRENCY_ID", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private ReferenceCurrency currency;

    /* hashCode() + equals() */
}

问题

*在Entity.currency字段中仅允许现有值的最佳方法是什么,如果货币不存在则不插入新值? AFAIK这不能简单地通过注释(bean验证或JPA注释)来解决。

我必须解析为检查ReferenceCurrency实体是否存在的@PrePersist / @PreConstruct方法?有更优雅的方式吗?*

0 个答案:

没有答案