gpt4 book ai didi

java - Hibernate JPA hasOne 映射?

转载 作者:行者123 更新时间:2023-12-02 07:48:37 25 4
gpt4 key购买 nike

假设我们有两个表,ORDERSOFFERS

订购POJO

@Entity
@Table(name = "ORDERS")
public class Order {

@Column(columnDefinition = "serial")
private @Id Integer id;
private @NotNull @Email String ownerEmail;
private @NotNull Integer offerId;
}

提供 POJO

@Entity
@Table(name = "OFFERS")
public class Offer {

@Column(columnDefinition = "serial")
private @Id Integer id;
private @Email @NotNull String ownerId;
}

是否可以在 EntityManager Order by ID 上的单个查询中进行获取,以便结果包含相关的 Offer 对象?

就像在订单中创建 @Transient Offer 字段一样,因为我们不想修改持久订单上的 Offer 数据。

或者唯一的方法是创建两个查询?

最佳答案

Order中的offer字段上注解@Transient意味着该字段将不会被映射和持久化。事实上,您应该映射此字段,但通过设置其 @Column.insertable() 将其设置为只读。和 @Column.updatable()为假。

@Entity
@Table(name = "ORDERS")
public class Order {

@Column(columnDefinition = "serial")
private @Id Integer id;
private @NotNull @Email String ownerEmail;

private @NotNull Integer offerId;

@Column(insertable=false , updateable=false)
private Offer offer;
}

要在单个查询中获取订单及其相关报价,您可以使用获取联接:

SELECT order FROM Order order join fetch order.offer

关于java - Hibernate JPA hasOne 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508737/

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