java 级联-更改也从非拥有方传播?

j7dteeu8  于 2023-04-28  发布在  Java
关注(0)|答案(1)|浏览(113)

我是Hibernate的新手。我曾经读到过,当使用CascadeType.ALL持久化时,更改是从拥有方传播的。我有下面的例子,我保存了非所有权实体,同时也保存了所有权实体。

class Account { 

    
    @OneToMany(mappedBy="account" , cascade=CascadeType.ALL)
    List<Transaction> list= new ArrayList<Transaction>();
    
    
}

class Transaction {

    @ManyToOne
    @JoinColumn(name="account_id")
    Account account;
}

Account a = new Account("savings");
    
Transaction t1 = new Transaction("shoe purchase", 45);

t1.setAccount(a);

a.getList().add(t1);

accountRepository.save(a); //If cascaded is on account

哪一方级联有关系吗?在这种情况下,我可以使用CascadeType.PERSIST
我的另一个问题是,我们是否为OneToMany/ManyToOne关系编写单向Map?

nfs0ujit

nfs0ujit1#

是的,这很重要。如果cascade只定义在parent上,当你在parent上做任何修改并持久化它时,那么在children上的基本修改也会被执行,但是改变children不会影响parent实体。相同,当只有子实体级联更改时。

相关问题