我在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
我尝试删除该列,但它又重新创建了。我不明白为什么这个专栏正在添加,任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
您还没有为字段" SkuImpl.totalSku"定义列名称。所以它根据JPA规范定义定义了自己的列名。
使用您在数据库中的名称添加@JoinColumn
。