java - Hibernate:外键的列数错误。应该是 1

标签 java spring hibernate jpa

我正在尝试映射到实体 Report 和 ReportLookup:

@Entity
public class Report extends AbstractMigrationObject implements Serializable {
    @JsonIgnore
    @Id
    private Long reportId;
    private String reportName;
    private String appName;
    private Integer reportNum;
    private String issue;
    @JsonProperty
    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumns({
            @JoinColumn(name = "reportName"),
            @JoinColumn(name = "appName"),
    })
    private Set<ReportLookup> lookupSet;

@Entity
public class ReportLookup implements Serializable {
    @JsonIgnore
    @Id
    private Long reportLookupId;
    private String parameterName;
    private String attributeName;
    private String lookupName;
    private Integer sequence;
    private String labelOverride;
    private String defaultValue;
    private Integer required;
    private Integer hidden;
    private String reportName;
    private String operator;
    private Integer multiLookup;
    private Integer reportNum;
    private String appName;
    @ManyToOne
    @JoinColumns({
            @JoinColumn(name = "appName", insertable = false, updatable = false),
            @JoinColumn(name = "reportName", insertable = false, updatable = false)
    })
    private Report report;

我不知道如何映射复合外键。总是收到此错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [persistance-context.xml]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: A Foreign key refering ru.ocrv.ekasui.changemonitoring.maximo.entity.report.Report from ru.ocrv.ekasui.changemonitoring.maximo.entity.report.ReportLookup has the wrong number of column. should be 1

最佳答案

我不确定,但你应该尝试使用你的类的两个 ID 更改你的 @JoinColumns 结构

    @JoinColumns({
        @JoinColumn(name = "reportId", insertable = false, updatable = false),
        @JoinColumn(name = "reportLookupId", insertable = false, updatable = false)
})

关于java - Hibernate:外键的列数错误。应该是 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58950886/

相关文章:

java - 由于 Task attempt failed to report status 600 秒,reduce 失败。杀戮!解决方案?

java - 使用相似的起始模式分割字符串

java - JPA双向OneToMany关系-无法删除子项

java - OpenSessionInViewFilter 无法转换为 javax.servlet.Filter

java - 尝试制作一个基本的实例化示例但无法

java - 使用 java 11 HttpClient 将响应主体流式传输到流式请求主体

mysql - 如何为多个表中的值添加 SQL 约束

java - Spring Boot - 从 HTTP 请求中读取 x509 客户端证书

java - 如何处理同一台机器上不同项目的不同JAVA版本?

java - CascadeType.Persist 没有按预期工作