我刚接触 Spring Hibernate。我创建一个包含列的表,它们的实体应该像这样
School.java
@Entity
@Table(name = "school")
public class School implements Comparable<School>{
@Transient
private int functionValue;
@Id
@GeneratedValue
private Integer id;
@Size(min = 3, message = "Name must be at least 3 characters!")
@UniqueUsername(message = "School Name already exists!")
@Column(length = 1000, unique = true)
private String name;
private SchoolTier schoolTier1 = new SchoolTier();
private SchoolTier schoolTier2 = new SchoolTier();
private SchoolTier schoolTier3 = new SchoolTier();
//their getter/setter
}
学校级别
@Entity
@Table(name = "schooltier")
public class SchoolTier {
@Id
@GeneratedValue
private Integer id;
@Id
private Integer schoolId;
// Pojo's
@Size(min = 0, message = " must be at least 4 characters!")
private String CampusImprovement;
//getter/setter
}
有一个以学校名称命名的表,该表具有与 school.java 中定义的相同列,并且还具有表 schooltier,其具有与 schooltier.java 中定义的相同列
但问题就在这里,比如学校表没有任何“SchoolTier”列,但在 school.java 中我有 3 个 schooltier 对象。现在它给出了一个异常,例如
Caused by: org.hibernate.MappingException: Could not determine type for com.scp.bid.entity.SchoolTier at table: school, for columns: [org.hibernate.mapping.Column(schoolTier1)]
现在如何解决这个问题?如果我做错了什么,请指导我。帮帮我
最佳答案
使用hibernate JPA @OneToOne Mapping 将 School 类与 SchoolTier 进行映射,
School 将是父实体,因为在数据库中,这将是具有 SchoolTier 实体子表的三个外键的父表。
这看起来像这样:
@Entity
@Table(name = "school")
public class School implements Comparable<School>{
@Transient
private int functionValue;
@Id
@GeneratedValue
private Integer id;
@Size(min = 3, message = "Name must be at least 3 characters!")
@UniqueUsername(message = "School Name already exists!")
@Column(length = 1000, unique = true)
private String name;
//This will create a foreign key of SchoolTier table.
@JoinColumn(name = "school_tier_id_1")
@OneToOne
private SchoolTier schoolTier1;
//This will create a foreign key of SchoolTier table.
@JoinColumn(name = "school_tier_id_2")
@OneToOne
private SchoolTier schoolTier2 = new SchoolTier();
//This will create a foreign key of SchoolTier table.
@JoinColumn(name = "school_tier_id_3")
@OneToOne
private SchoolTier schoolTier3;
//their getter/setter
}
SchoolTier 将是您案例中的子实体。
@Entity
@Table(name = "schooltier")
public class SchoolTier {
@Id
@GeneratedValue
private Integer id;
// Pojo's
@Size(min = 0, message = " must be at least 4 characters!")
private String CampusImprovement;
//getter/setter
}
关于java - JPA Hibernate实体异常: org. hibernate.MappingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41242041/