繁体   English   中英

Hibernate JPA有一个映射吗?

[英]Hibernate JPA hasOne mapping?

假设我们有两个表, 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;
}

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

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

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

注释@Transientoffer现场Order意味着这个字段将不会映射和持久化。 实际上,您应该映射此字段,但通过将其@ Column.insertable()@ Column.updatable()设置为false将其设置为只读。

@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM