[英]Add Hibernate entity with foreign key
我正在构建一个(spring boot)rest 服务,我似乎对 Hibernate 和外键或其他什么有一些根本性的误解。
我有两个实体:
@Entity
public class ClassA {
@Id
@Column(name = "id", nullable = false)
private Integer id;
@ManyToOne
@JoinColumn(name = "class_b", nullable = false)
private ClassB classB;
// more properties and getters/setters left out for brevity
}
@Entity
@Table(name = "class_b")
public class ClassB {
@Id
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "name", nullable = false, length = 100)
private String name;
// more properties and getters/setters left out for brevity
}
ClassA 有一个指向 ClassB 的外键。 我希望我的用户能够给我一个 classA 的实例,例如
{ //instance of class A, e.g. via POST
id: 19,
class_b_id: 17
}
这意味着,我得到了 class A 的 ID 和 class B 的 ID。如果我想创建 class A 的实体并将其保存在数据库中,我必须首先检索 class B 的相应实例,调用 setClassB(.. .) 然后将实例保存到数据库中。
我的实体甚至可能有更多实体的外键,我必须首先检索这些实体,包括它们的属性等,只是为了保存我的新实体。
这是应该的方式吗? 或者我在这里想念什么? 有没有一种方法可以按照我获取外键的方式使用外键来定义实体? (我不是说:“不要使用休眠”)不首先检索其他对象?
它只是感觉错误和不必要。
为什么不在这些实体之间创建双向关系并使用 classB 来级联 classA 的创建? 这样您就可以立即创建/更新,而不必手动检索和设置关系。
在您的示例中,您获得了要创建的 classA 的 id,还有 class_b_id,您可以使用它来获取 classB 实例并继续创建 classA,它将附加到 classB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.