Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 如何保存对@OneToOne关系的更改_Java_Jpa_Eclipselink_One To One - Fatal编程技术网

Java 如何保存对@OneToOne关系的更改

Java 如何保存对@OneToOne关系的更改,java,jpa,eclipselink,one-to-one,Java,Jpa,Eclipselink,One To One,这是我的EclipseLink JPA实体的一部分: public class Task implements Serializable { @JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no") @OneToOne(cascade = CascadeType.ALL) private Transaction idTransaction; } 当我持久化或合并任务实体时,事务实体不会更新对它的更改 有人

这是我的EclipseLink JPA实体的一部分:

public class Task implements Serializable { 
@JoinColumn(name = "IdTransaction", referencedColumnName = "serial_no")
@OneToOne(cascade = CascadeType.ALL)
private Transaction idTransaction;

}
当我持久化或合并任务实体时,事务实体不会更新对它的更改

有人告诉我使用这个:
(cascade=CascadeType.ALL)
,但它不起作用

那么,如何通过一个persist/merge调用保存对两个实体的更改呢

我通过以下方式更新数据库:

if (getEntityManager().isOpen()) {
            getTransaction().begin();
            entity = em.merge(entity);
            getTransaction().commit();
        }

“实体”是我所说的任务实体,它可以正确更新,但不能更新关系。

我找到了解决方案,以下是可用的级联:

CascadeType.MERGE
CascadeType.PERSIST
CascadeType.DETACH
CascadeType.REMOVE
CascadeType.REFRESH
CascadeType.ALL
如果您有一个实体“USA”,其中包含“州”实体列表,并且您对某些州进行了更改,则只需添加:

@OneToMany(cascade = CascadeType.MERGE)
private State stateID;

然后合并美国实体,而不是每个州。使用
CascadeType.MERGE
,它会自动为您更新所有内容。

您能显示修改
任务
事务
实例的代码吗?是的,我现在编辑了这个问题。您能在创建对象的地方显示任务类和服务吗?哦,我已经发布了解决方案。不过还是谢谢你的评论:D