代码之家  ›  专栏  ›  技术社区  ›  OpenSource

两个相关jpa实体之间的接口

  •  2
  • OpenSource  · 技术社区  · 15 年前

    场景如下(表中所示)

    Delivery table
    ------
    id  channelId   type
    10  100         fax
    20  200         email
    
    Fax table
    ----
    id   number
    100  1234567
    101  1234598
    
    Email table
    -----
    id   email
    200  a@a.com
    201  b@b.com 
    

    基本上,传递和通道实体之间是一对一的关系,但是由于每个具体通道(传真、电子邮件)有不同的成员,我想在两个实体之间创建一个通用接口(通道),并将其用于@one to one关系。在我看来,这是一个很简单的场景,你们中的很多人可能已经经历了,但我无法成功。我试着把目标放进去但没用。仍然说“交付引用了一个未知的实体”

    有什么想法吗?提前谢谢

    1 回复  |  直到 13 年前
        1
  •  1
  •   Pascal Thivent    15 年前

    使用一个 abstract 超级班 Channel 和A TABLE_PER_CLASS 继承策略?像这样的:

    @Entity
    @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
    public abstract class Channel {
        @Id
        @GeneratedValue
        private Long id;
    
        // ...
    }
    
    @Entity
    public class Fax extends Channel {
    }
    
    @Entity
    public class Email extends Channel {
    }
    
    @Entity
    public class Delivery {
        @Id
        @GeneratedValue
        private Long id;
    
        @OneToOne
        private Channel channel;
    
        // ...
    }