嗨下面是我的实体,它们之间的关联多对一外键必须有相同数量为多对一映射被引用的主键列
student.java
@Entity
@Table(name = "student")
public class student{
@Id
@Column(name = "UserID")
private String userid;
@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "userrole", referencedColumnName = "VALUE"),
@JoinColumn(name = "userrole", referencedColumnName = "DESCRIPTION")
})
private studentdetails userrole;
//setters and getters
//constructor
}
studentdetails.java
@Data
@Entity
@Table(name = "student_details")
public class studentdetails {
@Id
@Column(name = "VALUE")
private String value;
@Id
@Column(name = "DESCRIPTION")
private String description;
//setters and getters
//constructor
}
appmain.java
public static void main()
{
//session configuration
studentdetails sd = new studentdetails();
sd.setvalue("abc");
sd.setdescription("abcdef");
student student1 = new student();
student.setuserid("1");
student.userrole(sd);
student student2 = new student();
student.setuserid("2");
student.userrole(sd);
session.save(student1);
session.save(student2);
}
下面
都在我的2台
student:
UserID
userrole
student_details:
VALUE
DESCRIPTION
在“student_details”应该进入学生表
的“UserRole的”“价值”,但是当我执行我的appmain我收到以下错误列
org.hibernate.MappingException: Foreign key (FK6D56043A4415BDB5:student [userrole])) must have same number of columns as the referenced primary key (student_details [VALUE,DESCRIPTION])
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:113)
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:96)
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1354)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1261)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:383)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1377)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
我试图解决这个问题,但它显示同样的错误 请建议我如何解决这个
这是你的实体的完整代码吗?像@ @ OneToMany或@ ManyToOne这样的映射注释在哪里?从逻辑上讲,学生可以有单一的学生细节映射,反之亦然,所以映射应该是'@ oneToOne'吗? – Chaitanya 2014-11-04 06:49:52
请找到更新后的帖子(添加manytoone注释),我错过了添加它在 – user3824049 2014-11-04 06:52:50
后添加的答案解决您的问题,请检查。 – Chaitanya 2014-11-04 06:57:47