java - JPA Hibernate实体异常: org. hibernate.MappingException

标签 java mysql spring hibernate jpa

我刚接触 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/

相关文章:

java - 如何存储大量小文件

php - 如何防止使用 php 和 mysql 进行 sql 注入(inject)

forms - 在同一个@Controller 中使用多个@ModelAttribute 方法

java - 在 Spring Boot 中构建动态配置路径

java - 为什么 String 被视为抽象数据类型?

java - 无法从 List<File> 转换为 List<Path>

java - 将映射转换为 java 8 流中更扁平的结构

mysql - 如何在数据库中存储预设字段?

mysql - 在 mysql 表上的 EPOCH 时间上使用 GROUP BY 子句

java - 未注入(inject) Mapstruct 映射器