【问题标题】:Extra column is adding on db table in hibernate jpa OneToOne relation在休眠 jpa OneToOne 关系中的 db 表上添加了额外的列
【发布时间】:2016-03-24 07:39:52
【问题描述】:

我在 OneToOne 关系上有三个实体类 Product->SkuImpl->SkuAvailabilityImpl 我只需要添加一个产品,所以记录同时插入到 sku 表中到 SkuAvailability 表中

SkuImpl.java

@Entity 
public class SkuImpl implements  Sku {
    @OneToOne(targetEntity=SkuAvailabilityImpl.class, cascade={cascadeType.ALL},fetch=FetchType.EAGER) 
    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
    @LazyCollection(LazyCollectionOption.FALSE)
    protected SkuAvailability totalSku;
    //setter and getters
}

SkuAvailabilityImpl.java

@Entity 
public class SkuAvailabilityImpl implements SkuAvailability{
    @OneToOne(optional=true,targetEntity=SkuImpl.class) 
    @Cascade(value={org.hibernate.annotations.CascadeType.ALL})
    @JoinColumn(name="SKU_ID", referencedColumnName='SKU_ID',insertable=false,updatable=false)
    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
    protected Sku sku;
    //setter and getters
}

sku数据库表是

SKU_ID  | NAME   | QUANTITY | SKU_AVAILABILITY_ID 
--------+--------+----------+--------------------
        |        |          |

所有记录都插入正常,但这里的问题是,在上表中添加了一个名为totalSku_SKU_AVAILABILITY_ID 的额外列,如下所示

SKU_ID  | NAME   | QUANTITY | SKU_AVAILABILITY_ID |totalSku_SKU_AVAILABILITY_ID
--------+--------+----------+--------------------
101     |product1|  200     |                    |  503

我尝试删除该列,但它正在重新创建。我不明白为什么这个专栏要添加任何人都可以帮助我如何阻止这个?

【问题讨论】:

  • 您尚未为字段“SkuImpl.totalSku”定义列名,因此它定义了自己的列名。 @JoinColumn
  • @Neil Stockton,非常感谢@JoinColumn 解决了我的问题,
  • 很高兴听到这个消息。添加为答案,以便您接受它

标签: java mysql hibernate jpa


【解决方案1】:

您尚未为字段“SkuImpl.totalSku”定义列名,因此它根据 JPA 规范定义定义了自己的列名。 使用您在数据库中的名称添加 @JoinColumn

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 2012-07-30
    • 2012-10-05
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    相关资源
    最近更新 更多