Java 与hibernate注释的接口

Java 与hibernate注释的接口,java,hibernate,jpa,annotations,gilead,Java,Hibernate,Jpa,Annotations,Gilead,我想知道如何才能对接口进行注释 @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 i

我想知道如何才能对接口进行注释

@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< Hierarchy > fileInformation = new ArrayList< Hierarchy >();
}
我在网络上搜索了一些注释或解决方法,但我无法映射出简单的界面

public interface Hierarchy {

}
我在带有文件夹的层次结构列表中遇到映射异常,但我不知道如何处理
正确地映射类。

出现了一点谷歌搜索

您可以在内部使用接口,但 无法在hibernate中映射接口, 您必须映射类,而不考虑 无论您使用的是xml映射还是 注释映射。冬眠是 处理持久化服务的生命周期 对象,所以它需要知道什么类 要实例化,您需要提供 这个信息对它来说。。。我不是 甚至确定你的建议是什么 甚至看起来像?你会怎么做 为给定的目标提供实现 在运行时休眠的接口 实例化


看来你运气不好。

你可以在Hibernate中映射接口,作为继承层次结构的一部分。这当然可以通过XML映射实现,如中所述

不过,基于注释的映射是另一回事。我对它不太熟悉,但也包括了一些例子。适合你的情况,看起来

@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映射的解决方案

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

@Kris您应该进一步阅读。。。同样的帖子最后还包括一篇帖子,OP告诉他成功解决了问题。第30页的文档支持你所说的。因此,我意识到,由于我的文件夹将能够包含许多子文件夹和文件信息,因此我需要使用复合模式来提供帮助。我在网上找到了这篇文章,它展示了如何使用注释映射复合模式,所以我基本上只想保持层次(树)结构。如果有人知道那里的教程,我会发现很难理解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 { ... }