简体   繁体   English

Hibernate Mapping中的错误“外键引用的列数错误。 应该是2“

[英]Error in Hibernate Mapping “A Foreign key refering has the wrong number of column. should be 2”

TRANSFORMATION table having a composite primary key trans_id and version . 具有复合主键trans_idversion TRANSFORMATION表。
EXPRESSION table having foreign key reference from trans_id only, it doesn't have a version column. EXPRESSION表只有trans_id外键引用,它没有version列。

Through JUnit when I try to save into TRANSFORMATION , I am getting below error. 当我尝试保存到TRANSFORMATION ,通过JUnit,我得到了以下错误。

caused by: org.hibernate.AnnotationException: A Foreign key refering org.persistence.entity.Transformation from org.persistence.entity.Expression has the wrong number of column. should be 2
            at org.hibernate.cfg.annotations.TableBinder.bindFk(TableBinder.java:420) ~[hibernate-core-4.2.8.Final.jar:4.2.8.Final]
            at org.hibernate.cfg.ToOneFkSecondPass.doSecondPass(ToOneFkSecondPass.java:117) ~[hibernate-core-4.2.8.Final.jar:4.2.8.Final]
            at org.hibernate.cfg.Configuration.processEndOfQueue(Configuration.java:1560) ~[hibernate-core-4.2.8.Final.jar:4.2.8.Final]
            at org.hibernate.cfg.Configuration.processFkSecondPassInOrder(Configuration.java:1481) ~[hibernate-core-4.2.8.Final.jar:4.2.8.Final]
            ...
            at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:250) ~[spring-test-4.0.2.RELEASE.jar:4.0.2.RELEASE]
            at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64) ~[spring-test-4.0.2.RELEASE.jar:4.0.2.RELEASE]
            at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91) ~[spring-test-4.0.2.RELEASE.jar:4.0.2.RELEASE]
            ... 25 more

@Entity(name="Transformation")
@Table(name="Transformation")
public class Transformation extends BaseEntity implements Serializable{


    private static final long serialVersionUID = 1L;

    @EmbeddedId 
    private TransformationPK id;
          /*@OneToMany(mappedBy="transformation")
    private Set<Expression> expressions;*/

          @OneToMany
    @JoinColumn(name="TRANS_ID", nullable = false)
    @Fetch(FetchMode.SUBSELECT)
    private Set<Expression> expressions;
}

@Embeddable
public class TransformationPK implements Serializable{

    private static final long serialVersionUID = 1L;

    @Column(name="TRANS_ID")
    private String transId;

    @Column(name="VERSION", precision = 2, scale = 1)
    private Double transVersion;

    public TransformationPK() {
    }
}


@Entity(name="EXPRESSION")
@Table(name="EXPRESSION")
public class Expression extends BaseEntity implements Serializable{


    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "Expression_ID")
    @GeneratedValue(strategy=GenerationType.AUTO)
    private String expressionId;

    @Column(name="TRANS_ID")
    private String transId;

    /*@ManyToOne
    @JoinColumns ({
           @JoinColumn(name = "TRANS_ID", insertable = false, updatable = false),
           @JoinColumn(name = "VERSION", insertable = false, updatable = false)
          })
    private Transformation transformation;*/

    @ManyToOne
          @JoinColumn(name = "TRANS_ID", nullable = false, insertable = false, updatable = false)
    private Transformation transformation;
}

Can anyone suggest how to resolve this. 谁能建议如何解决这个问题。

As your embedded PK has two columns, here you should have two joining columns as well: 由于您的嵌入式PK有两列,因此您还应该有两个连接列:

@ManyToOne
@JoinColumns({  
@JoinColumn(name = "TRANS_ID", nullable = false, insertable = false, updatable = false),
@JoinColumn(name = "VERSION", ....
})
private Transformation transformation;

BTW, you have bidirectional association Transformation-Expression, you should add mappedBy at one end. 顺便说一句,你有双向关联Transformation-Expression,你应该在一端添加mappedBy。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 外键引用的列数错误。 应该是 2 - A Foreign key refering has the wrong number of column. should be 2 AnnotationException: 引用的外键列数错误。 应该是 0 - AnnotationException: A Foreign key refering has the wrong number of column. should be 0 org.hibernate.AnnotationException:外键引用的列数错误。 应该是2 - org.hibernate.AnnotationException: A Foreign key refering has the wrong number of column. should be 2 hibernate4:引用的外键列数错误。 应该是 2 - hibernate4: A Foreign key refering has the wrong number of column. should be 2 org.hibernate.AnnotationException:从Y引用X的外键具有错误的列数。 应该是2 - org.hibernate.AnnotationException: A Foreign key refering X from Y has the wrong number of column. should be 2 org.hibernate.AnnotationException:从y引用x的外键具有错误的列数。 应该是n - org.hibernate.AnnotationException:A Foreign key refering x from y has the wrong number of column. should be n Hibernate:外键的列数错误。 应该是 1 - Hibernate: a foreign key has the wrong number of column. should be 1 AnnotationException:引用dayHibernate的外键…错误的列数。 应该是3 - AnnotationException: A Foreign key refering dayHibernate … wrong number of column. should be 3 从MainTableEntity引用MasterDataEntity的外键具有错误的列数 - A Foreign key refering MasterDataEntity from MainTableEntity has the wrong number of column Hibernate一对多关系:错误的列数。 应该是2 - Hibernate One to many Relationship : the wrong number of column. should be 2
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM