JPA读取但不写入/更新属性

时间:2014-01-05 23:56:35

标签: java hibernate jpa jpa-2.0

我有一个JPA实体,它具有以下列方式声明的属性

 @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
    @JoinColumn(name = "userId", referencedColumnName = "id", insertable = false, updatable = false)
    private UserBare user;

(UserBare是我创建的一个虚拟实体,它是用户obj的一个愚蠢的版本,因为我需要一些日期,而不是所有用户obj都可用于此实体。有更好的方法来解决这个问题吗?

这是一个方便的attr我只是在读取这个实体时使userBare对象可用于此实体。但是当我实际编写这个实体时,它似乎在数据库中创建了“user”的新条目(而不是更新)。我已经有insertable = false,updatable = false但它仍然写入数据库。我尝试删除CascadeType声明,但这是一个错误。

以下是添加不需要的行后的数据库快照(最后3个)。另外我注意到删除原始实体并没有删除这三个不需要的行。所以我猜JPA正在存储它们,但引用对原始实体来说是完整的。

enter image description here

1 个答案:

答案 0 :(得分:1)

我的souspicioun将是“OneToOne”意味着“OneToOne”,如果您没有将Optional设置为true,则不包括“OneToZero”的可能性:

@OneToOne(optional=true)

但只是一个猜测..我不确定