与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
所以看起来你运气不好。