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的类映射为一个实体
请问应该怎么办?

解决方案 »

  1.   

    如果是想体现这种包含关系。用 hibernate中的 组件映射就可以了。
    不过 用内部类。我还真没有用过。
      

  2.   

    用 hibernate中的 组件映射就可以了。 
    比如外键这些啊,在配置文件中指定关系进行映射
    one-to-many等等
      

  3.   

    不行的,你可以用MYEclipse 转一下,就可以看到结果了..