Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
Database JPA:为什么merge会在没有级联的情况下更新联接表_Database_Session_Jpa_Cascade_Staleobjectstate - Fatal编程技术网

Database JPA:为什么merge会在没有级联的情况下更新联接表

Database JPA:为什么merge会在没有级联的情况下更新联接表,database,session,jpa,cascade,staleobjectstate,Database,Session,Jpa,Cascade,Staleobjectstate,感谢您提前查看此问题 基本上,我有几个实体,这里是关系 表A--

感谢您提前查看此问题

基本上,我有几个实体,这里是关系

A
--AB--Table
B

以及实体类:

class A {    
     @ManyToMany
     @JoinTable(name = "A_B", joinColumns = { @JoinColumn(name = "A_ID",nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "B_ID", nullable = false) })
     private List<B> bList;
 }

class B {    
    @ManyToMany(mappedBy = "bList")
    private List<A> aList;
}
A类{
@许多
@JoinTable(name=“A_B”,joinColumns={@JoinColumn(name=“A_ID”,nullable=false)},inverseJoinColumns={@JoinColumn(name=“B_ID”,nullable=false)})
私人名单;
}
B类{
@许多(mappedBy=“bList”)
私人名单;
}
现在我有两个会话访问相同的
对象。我更改了
A
bList
值,并将其保存在会话1中。现在,会话2中的对象
A
已过时,我保存了一个对象
C
,它的引用对象
A
处于过时状态


我想知道为什么不使用
cascade={PERSIST,MERGE}
将其放入
@manytomy
注释中,保存对象
C
也会将
A
的陈旧状态更新回数据库,因此我在会话1中对对象
A
所做的更改就消失了

你知道怎么解决这个问题吗?我在“自动”更新相关表时遇到类似问题: