Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA读取但不写入/更新属性_Java_Hibernate_Jpa_Jpa 2.0 - Fatal编程技术网

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

Java JPA读取但不写入/更新属性,java,hibernate,jpa,jpa-2.0,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的一个

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

 @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
    @JoinColumn(name = "userId", referencedColumnName = "id", insertable = false, updatable = false)
    private UserBare user;
(UserBare是我创建的一个虚拟实体,它是用户obj的一个简化版本,因为我需要一些日期,并不是所有的用户obj都可用于此实体。有没有更好的方法来实现这一点

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

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


我的理解是,“OneToOne”的意思是“OneToOne”,如果您不将Optional设置为true,则不包括“OneToZero”的可能性:

@OneToOne(optional=true)

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

只是好奇-如果你的UserBare只是一个界面,而你的“重”用户正在实现它,会发生什么?