java内部类如何映射为数据库实体?比如用hibernate映射一个
如下的类
public class Department implements Serializable{
private int deptId;
private String deptName;
private Collection<Employee> employees;
//省略Getter/Setter
public static class Employee implements Serializable{
private Department department;
private int empId;
private String empName;
//省略Getter/Setter
}
}
这里是举一个例子,在实际应用中可能不一定适用
我只是想知道如上的内部类Employee该如何映射有比如说用topLink的JPA批注,如果写成这样
@Entity
@Table(name="department")
public class Department implements Serializable{
@Id
@Column(name="dept_id")
private int deptId;
@Id
@Column(name="dept_name")
private String deptName;
@OneToMany(cascade=CascadeType.All,mappedBy="department")
private Collection<Employee> employees;
//省略Getter/Setter
@Entity
@Table(name="employee")
public static class Employee implements Serializable{
@JoinColumn(name="depart_id",referencedName="depart_id")
@ManyToOne
private Department department;
@Id
@Column(name="emp_id")
private int empId;
@Column(name="emp_name")
private String empName;
//省略Getter/Setter
}
}这个内部类用了@Entity批注会提示
An Entity class must be a top level class
但是我确实要将一个非top level的类映射为一个实体
请问应该怎么办?
如下的类
public class Department implements Serializable{
private int deptId;
private String deptName;
private Collection<Employee> employees;
//省略Getter/Setter
public static class Employee implements Serializable{
private Department department;
private int empId;
private String empName;
//省略Getter/Setter
}
}
这里是举一个例子,在实际应用中可能不一定适用
我只是想知道如上的内部类Employee该如何映射有比如说用topLink的JPA批注,如果写成这样
@Entity
@Table(name="department")
public class Department implements Serializable{
@Id
@Column(name="dept_id")
private int deptId;
@Id
@Column(name="dept_name")
private String deptName;
@OneToMany(cascade=CascadeType.All,mappedBy="department")
private Collection<Employee> employees;
//省略Getter/Setter
@Entity
@Table(name="employee")
public static class Employee implements Serializable{
@JoinColumn(name="depart_id",referencedName="depart_id")
@ManyToOne
private Department department;
@Id
@Column(name="emp_id")
private int empId;
@Column(name="emp_name")
private String empName;
//省略Getter/Setter
}
}这个内部类用了@Entity批注会提示
An Entity class must be a top level class
但是我确实要将一个非top level的类映射为一个实体
请问应该怎么办?
不过 用内部类。我还真没有用过。
比如外键这些啊,在配置文件中指定关系进行映射
one-to-many等等