与hibernate注释的接口

我想知道我将如何能够注释一个界面

@Entity @Table(name = "FOLDER_TABLE") public class Folder implements Serializable, Hierarchy { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "folder_id", updatable = false, nullable = false) private int fId; @Column(name = "folder_name") private String folderName; @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = "FOLDER_JOIN_FILE_INFORMATION_TABLE", joinColumns = { @JoinColumn(name = "folder_id") }, inverseJoinColumns = { @JoinColumn(name = "file_information_id") }) private List fileInformation = new ArrayList(); 

上面和下面是两个实现名为Hierarchy的接口的类,文件夹类有一个Hierarchyies列表作为文件夹或文件信息类

 @Entity @Table(name = "FILE_INFORMATION_TABLE") public class FileInformation implements Serializable, Hierarchy { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "file_information_id", updatable = false, nullable = false) private int ieId; @Column (name = "location") private String location; 

我已经把网络分开来进行注释或解决方法但是我无法映射界面,这就是这个

 public interface Hierarchy { } 

我在带有文件夹的层次结构列表上获得映射exception,但我不知道如何正确映射类

您可以在Hibernate中映射接口,作为inheritance层次结构的一部分。 使用XML映射肯定是可行的,正如Hibernate参考的第9章中所描述的那样。

然而,基于注释的映射是一个不同的故事。 我对它并不熟悉,但是Java Persistence with Hibernate也包含了这方面的例子。 适应你的情况,它看起来像

 @MappedSuperclass public interface Hierarchy { } @Entity @Table(name = "FOLDER_TABLE") public class Folder implements Serializable, Hierarchy { ... } @Entity @Table(name = "FILE_INFORMATION_TABLE") public class FileInformation implements Serializable, Hierarchy { ... } 

此映射将使用具有隐式多态性的每个具体类的表。

但是,其他来源表明接口的注释支持可能尚未正常工作/稳定:

  • 有关使用@Entity注释和接口的相关开放式错误报告 ,其中还包括一些补丁,
  • 这是一个相关的(相当古老的)线程 ,描述了使用XML映射的变通方法。

因此,您可能需要进行实验,包括更改inheritance映射策略,可能将接口转换为抽象类(如果可能的话 – 因为类只能扩展单个基类)…

一个小小的谷歌搜索出现了……

您可以在内部使用接口,但无法在hibernate中映射接口 ,无论是使用xml映射还是注释映射,都必须映射类。 hibernate正在处理持久对象的生命周期,所以它需要知道要实例化的类,所以你需要向它提供这些信息……我甚至不确定你的建议甚至是什么样的? 你如何在运行时提供给hibernate的给定接口的实现来实例化?

http://forum.springsource.org/showthread.php?t=67420

所以看起来你运气不好。