gpt4 book ai didi

java - 有人知道@JoinColumn注释中表属性的用法吗?我应该给出实际的表名称还是实体名称?

转载 作者:行者123 更新时间:2023-12-02 02:34:52 25 4
gpt4 key购买 nike

我在使用@ManyToOne关系时遇到问题,因为我的外键和主键具有相同的名称,所以Hibernate正在考虑我映射的那个作为当前表的列名。所以我想我会使用@JoinColumn注释的表属性,但它似乎不起作用。我给出了实际的表的值(value),但它没有被占用。也尝试了类名。下面是实体。您可以看到两个表中的 PRJ_NBR 是相同的。因此,当我尝试运行该项目时,我收到类似 无法找到预期的辅助表:没有可用的 HEAD

的错误

如果我从 @JoinColumn 中删除 table 属性,我会收到错误 - 实体映射中的重复列:com.example.jpademo.Detail 列:PRJ_NBR(应使用插入映射=“假”更新=“假”)

@Entity(name="Head")
@Table(name = "HEAD")
public class QuoteHead {
@Id
@Column(name = "PRJ_NBR")
private Integer projNumber;
@Column(name = "CUS_SYS_ID")
private Integer cusSysId;
@OneToMany(mappedBy = "head", cascade = CascadeType.ALL, orphanRemoval =
true)
private List<Detail> details = new ArrayList<Detail>();
}

@Entity
@Table(name = "DETAIL")
@JsonIgnoreProperties
public class Detail {
@Transient
private Integer projectNumber;
@Transient
private Integer itemNumber;
@Transient
private Integer sequenceNumber;

@ManyToOne
@JoinColumn(name = "PRJ_NBR", table = "HEAD")
private Head head;

@JsonIgnore
@EmbeddedId
private DetailCompositeId id;
}
@Embeddable
public class DetailCompositeId implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "PRJ_NBR")
private Integer projectNumber;
@Column(name = "ITM_NBR")
private Integer itemNum;
@Column(name = "SEQ_NBR")
private Integer sequenceNumber;
}

最佳答案

删除“table”并尝试放入 insertable="false"、 updatable="false"然后我认为它应该可以工作

关于java - 有人知道@JoinColumn注释中表属性的用法吗?我应该给出实际的表名称还是实体名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46528731/

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