Read the rules before posting!
http://www.hibernate.org/ForumMailingli ... AskForHelp
Hibernate version:
3.0
Mapping documents:
hibernate-annotations-3.0beta1
Full stack trace of any exception that occurs:
org.hibernate.MappingException: Foreign key (FK8C537FB2372ADF72:Table4 [IdT1,IdT2,field])) must have same number of columns as the referenced primary key (Table3 [field])
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:86)
at org.hibernate.mapping.ForeignKey.setReferencedTable(ForeignKey.java:51)
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:952)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:897)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:167)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1048)
My Entitys
Code:
Table1
idT1
field1
field2
Table2
idT2
field1
field2
Table3
@Id
public Table3PK getComp_id() {return this.comp_id;}
public void setComp_id(Table3PK comp_id) { this.comp_id = comp_id; }
field1
field2
Table3PK
@ManyToOne
@JoinColumn(name="idT1")
public Table1 getTable1() { return this.table1;}
public void setTable1(Table1 table1) { this.table1 = table1; }
@ManyToOne
@JoinColumn(name="idT2")
public Table2 getTable2() { return this.table2;}
public void setTable2(Table2 table2) { this.table2 = table2; }
@Column(name="field")
public Integer getField() { return this.field; }
public void setCdProced(Integer field) { this.field = field; }
Table4
.
.
.
@ManyToOne
@JoinColumns ({
@JoinColumn(name="idT1"),
@JoinColumn(name="idT2"),
@JoinColumn(name="field")
})
public Table3 getTable3() { return this.table3;}
public void setTable3(Table3 table3) { this.table3 = table3; }
When I trying make a ManyToOne of Table4 to Table3 where Table3 has a compose_id and ManyToOne inside, is throw the Exception above,
but, if I change Table3PK removing @ManyToOne inside
Table3PK without ManyToOneCode:
Table3PK
@Column(name="idT1")
public Integer getIdT1() { return this.idT1;}
public void setIdT1(Integer idT1) { this.idT1 = idT1; }
@Column(name="idT2")
public Integer getIdT2() { return this.idT2;}
public void setIdT2(Integer idT2) { this.idT2 = idT2; }
@Column(name="field")
public Integer getField() { return this.field; }
public void setCdProced(Integer field) { this.field = field; }
then work fine.
Anybody can help me.