【问题标题】:Interfaces with hibernate annotations带有休眠注解的接口
【发布时间】:2011-02-04 21:46:21
【问题描述】:

我想知道如何注释界面

@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 >();
}

上面和下面是 2 个实现称为 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 {

}

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

【问题讨论】:

    标签: java hibernate jpa annotations gilead


    【解决方案1】:

    您可以在 Hibernate 中映射接口,作为继承层次结构的一部分。这在 XML 映射中是完全可以实现的,正如在 Chapter 9 of the Hibernate reference 等中所描述的那样。

    不过,基于注释的映射是另一回事。我对它不是很熟悉,但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 { ... }
    

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

    但是,其他消息来源表明,对接口的注释支持可能还没有工作/稳定:

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

    【讨论】:

    • rite 所以,我意识到我的文件夹将能够有许多子文件夹和文件信息,我需要使用复合模式来提供帮助。我在网上找到了这个theresearchkitchen.com/blog/archives/57 它展示了如何使用注释映射复合模式
    • 我基本上想要的只是保持一个层次结构(树)结构。如果有人知道那里的教程,我发现很难理解休眠文档。
    【解决方案2】:

    出现了一点谷歌搜索...

    您可以在内部使用接口,但 你不能在休眠中映射接口, 你必须映射类,不管 无论您是使用 xml 映射还是 注释映射。冬眠是 处理持久性的生命周期 对象,所以它需要知道什么类 实例化所以你需要提供 这个信息给它...我不是 甚至确定你的建议如何 甚至会是什么样子?你会怎么做 提供给定的实现 在运行时休眠的接口 实例化?

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

    看来你运气不好。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2013-09-29
    相关资源
    最近更新 更多