gpt4 book ai didi

java - 在 hibernate jpa OneToOne 关系中的 db 表上添加了额外的列

转载 作者:可可西里 更新时间:2023-11-01 09:02:58 24 4
gpt4 key购买 nike

我在 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”定义列名,因此它根据 JPA 规范定义定义了自己的列名。使用您在数据库中的名称添加 @JoinColumn

关于java - 在 hibernate jpa OneToOne 关系中的 db 表上添加了额外的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com