gpt4 book ai didi

java - JPA/Hibernate 获取

转载 作者:行者123 更新时间:2023-12-01 10:31:54 24 4
gpt4 key购买 nike

我有 2 个具有 OneToMany 单向关系的类。

 class A {
@Column(name = "a_id")
Integer id;
@OneToMany
@JoinColumn(name = "a_id")
private List<B> listOfB;
//getters and setters
}

class B {
Integer id;
String name;
@Column("a_id")
Integer aId;
//getters and setters
}

在数据库中我已经保存了 B 的实例。我需要做的是:

a.listOfB.add(b);
save(a);

在数据库中的对象b中,我有id和name,但fk为空。我需要更新 fk,但在此之前我需要获取对象 b;我该怎么做?

只能通过编写自定义方法,还是Hibernate/JPA有自己的方法来获取对象?

最佳答案

您的映射不是很常见。常见的方式是在 B 中使用 @JoinColumn,在 A 中使用 mappedBy = "a"。并且您可以指定级联。在最简单的情况下cascade = CascadeType.ALL

    class A {
@Column(name = "a_id")
Integer id;

@OneToMany(mappedBy = "a", cascade = CascadeType.ALL)
private List<B> listOfB = new ArrayList<B>;

public void addB(B b) {
b.setA(this);
listOfB.add(b);
}
}

class B {
Integer id;
String name;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "a_id")
private A a;
}

解决您的问题

save(a);
b.setA(a);
saveOrUpdate(b);

并且cascade将帮助您在addB()方法的帮助下以几乎您自己的方式做同样的事情

a.addB(b);
save(a);

关于java - JPA/Hibernate 获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042538/

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