zoukankan      html  css  js  c++  java
  • 双主键关联映射(double primary key)

    A Foreign key refering com.wawagame.backend.trade.hbentity.ProductEntity from com.wawagame.backend.trade.hbentity.OrdersEntity has the wrong number of column. should be 2

    当一个表里有双主键:

    在进行多对一映射时:

    当该表作为one的一方是时:

    再多的一方的entity里用注解进行映射要关联两个主键:

    例子如下:

    OrdersEntity 多的一方

    @Entity
    @Table(name = "orders", schema = "", catalog = "game")
    public class OrdersEntity {
    @Id
    @Column(name = "serialNumber")
    private String serialNumber;
    @Basic
    @Column(name="userId")
    private String userId;
    @Basic
    @Column(name = "appId")
    private String appId;
    @Basic
    @Column(name = "productId")
    private long productId;
    @Basic
    @Column(name = "quantity")
    private long quantity;
    @Basic
    @Column(name = "price")
    private long price;
    @Basic
    @Column(name = "status")
    private byte status;
    @Basic
    @Column(name = "paymentPlat")
    private String paymentPlat;
    @Basic
    @Column(name = "createTime")
    private long createTime;
    @Basic
    @Column(name = "paymentTime")
    private Long paymentTime;
    @Basic
    @Column(name = "totalPrice")
    private long totalPrice;
    @Basic
    @Column(name = "clientIp")
    private String clientIp;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "appId",insertable = false,updatable = false)
    private AppEntity appEntity;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
    @JoinColumn(name = "productId", insertable = false, updatable = false),
    @JoinColumn(name = "appId", insertable = false, updatable = false)
    })
    private ProductEntity productEntity;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "userid",insertable = false,updatable = false)
    private UserEntity userEntity;

     PoductEntity一的一方

    public class ProductEntityPK implements Serializable {
    @Column(name="productId")
    @Id
    private long productId;
    @Column(name="appId")
    @Id
    private String appId;

    @Entity
    @Table(name = "product", schema = "" , catalog = "game")
    @IdClass(ProductEntityPK.class)
    public class ProductEntity {
    @Id
    @Column(name = "appId")
    private String appId;
    @Id
    @GeneratedValue
    @Column(name = "productId")
    private long productId;
    @Basic
    @Column(name = "productName")
    private String productName;
    @Basic
    @Column(name = "productDesc")
    private String productDesc;
    @Basic
    @Column(name = "price")
    private long price;
    @OneToMany(mappedBy = "productEntity",fetch = FetchType.LAZY)
    private Set<OrdersEntity> ordersEntity = new HashSet<OrdersEntity>();
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="appId",insertable = false, updatable = false)
    private AppEntity appEntity;

  • 相关阅读:
    使用XmlDataDocument将数据存储到XML文档
    Dubbo+Nacos 运行异常io.netty.handler.codec.EncoderException: java.lang.NullPointerException
    一、字符串常量Java内部加载
    更高效率,Java快速获取图片尺寸宽高分辨率(支持webp)
    水印宽高比例自适应图片(Java-Thumbnails)
    UEditor 自定义图片视频尺寸校验
    应用宝官方错误日志
    Eclipse使用hibernate插件
    解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
    [Err] 1022
  • 原文地址:https://www.cnblogs.com/sy-liu/p/6890660.html
Copyright © 2011-2022 走看看