pij*_*cse 2 java hibernate jpa
public class Employee implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "employee_id")
private Integer employeeId;
@Column(name = "doj")
@Temporal(TemporalType.DATE)
private Date doj;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "id.employee")
private Set<EmployeeProject> employeeProject;
//
Run Code Online (Sandbox Code Playgroud)
项目.java
public class Project implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "project_id")
private Integer projectId;
@Column(name = "exp_end_date")
@Temporal(TemporalType.DATE)
private Date expEndDate;
@Column(name = "project_name")
private String projectName;
@Column(name = "start_date")
@Temporal(TemporalType.DATE)
private Date startDate;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "id.project")
private Set<EmployeeProject> employeeProject;
Run Code Online (Sandbox Code Playgroud)
员工项目.java
@IdClass(EmployeeProjectPK.class)
public class EmployeeProject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Id
@Column(name = "PROJECT_ID", insertable = false, updatable = false)
private int projectId;
@Id
@Column(name = "employee_id", insertable = false, updatable = false)
private int employeeId;
@ManyToOne
@JoinColumn(name = "employee_id")
private Employee employee;
@ManyToOne
@JoinColumn(name = "project_id")
private Project project;
Run Code Online (Sandbox Code Playgroud)
员工项目PK.Java
public class EmployeeProjectPK implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer projectId;
private Integer employeeId;
Run Code Online (Sandbox Code Playgroud)
基于上述实体设计,当我尝试保留“员工”时,我遇到了以下异常。任何想法?
引起原因:java.lang.ClassCastException:org.hibernate.mapping.SimpleValue无法转换为org.hibernate.mapping.Component
我认为你的问题是由 Employee 实体映射的
你可以尝试使用吗
@OneToMany(cascade = CascadeType.ALL, mappedBy = "employee")
private Set<EmployeeProject> employeeProject;
Run Code Online (Sandbox Code Playgroud)
代替
@OneToMany(cascade = CascadeType.ALL, mappedBy = "id.employee")
private Set<EmployeeProject> employeeProject;
Run Code Online (Sandbox Code Playgroud)
也尝试在项目实体中更改它并使用
@OneToMany(cascade = CascadeType.ALL, mappedBy = "project")
private Set<EmployeeProject> employeeProject;
Run Code Online (Sandbox Code Playgroud)
代替
@OneToMany(cascade = CascadeType.ALL, mappedBy = "id.project")
private Set<EmployeeProject> employeeProject;
Run Code Online (Sandbox Code Playgroud)
所以最后你应该更换
映射By =“id.project”通过映射By =“项目”
和
映射者 = "id.employee" by映射者 = "雇员"
| 归档时间: |
|
| 查看次数: |
8575 次 |
| 最近记录: |