gpt4 book ai didi

java - Spring数据jpa保存

转载 作者:行者123 更新时间:2023-11-30 06:59:33 25 4
gpt4 key购买 nike

我怎样才能通过考试? (在迁移我的代码以使用存储库之前正在工作)。 bs 保存后存储在数据库中,但对象没有更新。我必须做什么才能实现它?

给定这些类:

@Entity
public class A {
@Id
private String id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "aId")
private Set<B> bs= new HashSet<B>();
...
}

@Entity
public class B {
@Id
@GeneratedValue
private int id;
private String aId;
private String foo;
...
}

和存储库:

@RepositoryDefinition(domainClass = A.class, idClass = String.class)
public interface ARepository {
...
void save(A a);
...
}

此测试失败:

    // "a" saved and flushed
B b = new B();
b.setAId(a.getId());
a.getBs().add(b);
ARepository.save(a);
assertTrue(b.getId() > 0);

最佳答案

repository.save() 执行persist(如果提供的参数是 transient 的)或merge(否则)。

由于 a 不是 transient 的,因此执行了 merge,这意味着没有可以级联到 bs 的 persist 操作

您要么必须显式保存 b,要么在保存 a 之前将 b 添加到新的 a ,以便 persist 正确级联。

关于java - Spring数据jpa保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com