栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JPA ManyToMany联接表具有所有属性,如PK

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JPA ManyToMany联接表具有所有属性,如PK

您可以使用实体的类作为IdClass的参数。那是不对的。应该使用Id类别。另外,不需要连接实体中ID的单独字段。

在下面查找类似代码的内容。我不能保证它可以在这样的旧版本的Hibernate中工作,但是可以肯定地在任何一个版本中都不能工作。值得尝试。如果要使用JPA
2.0功能,则至少升级到3.5.X版本(甚至是更新的版本)不会有什么坏处。构造函数/等式等被删除以节省空间。

@Entity@Table(name = "Orders")public class Order {    @Id Long id;    @oneToMany(mappedBy="order")    private List<OrderDetail> orderItems;}@Entity@Table(name="PRODUCTS")public class Product {    @Id Long id;    @oneToMany(mappedBy="product")    private List<OrderDetail> orderItems;}@Entity@IdClass(OrderDetailId.class)@Table(name = "ORDER_DETAIL")public class OrderDetail implements Serializable {    @Id @ManyToOne @JoinColumn(name = "ORDER_ID")    private Order order;    @Id @ManyToOne @JoinColumn(name = "PRODUCT_ID")    private Product product;    @Column(name = "PRICE") private double price;    //Maybe you also want to use @TemporalType here    @Column(name = "LAST_UPDATED_TIME") private Date lastUpdatedTime;}public class OrderDetailId implements Serializable {    private Long order;    private Long product;}

2017年8月15日更新在JPA 2.1及更高版本中,您无需为复合ID添加类,您可以像这样进行操作:

@Entity@Table(name = "ORDER_DETAIL")public class OrderDetail implements Serializable {    @Id @ManyToOne @JoinColumn(name = "ORDER_ID")    private Order order;    @Id @ManyToOne @JoinColumn(name = "PRODUCT_ID")    private Product product;    @Column(name = "PRICE") private double price;    //Maybe you also want to use @TemporalType here    @Column(name = "LAST_UPDATED_TIME") private Date lastUpdatedTime;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406123.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号