繁体   English   中英

JPA中的多级继承

[英]Multiple level inheritance in JPA

我正在尝试使用JPA构建模型,但是我遇到了一个问题,我找不到一个简单的解决方案。 好吧,比方说,我将电影,电视连续剧和电视剧集存储在数据库中。 我有一张桌子存储三种类型。 现在,我有一个区分列与这三种类型。 在Java中,我有一个抽象类,而Movie,TVSerie和TVEpisode扩展了该类。

我希望能够一次检索电视元素(TVSerie和TVEpisode),例如通过搜索请求。 我曾考虑过在TVElement类上使用第二个鉴别符列,如下所示:

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type")
public abstract class Element{
  ...
}


@Entity
@DiscriminatorValue("tv")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="subtype")
public class TVElement extends Element{
  ...
}


@Entity
@DiscriminatorValue("episode")
public class TVEpisode extends TVElement{
  ...
}

但是,此解决方案似乎不起作用。

在jpa中具有2级继承的最佳方法是什么?

谢谢

您显然不需要子类上的第二个@DiscriminatorColumn

TVElement不是抽象的,所以在hql中这样的事情应该没问题

from TVElement tvElement where ...

它也应该获取子类型。 您的课程应该类似于以下内容:

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="type")
@Polymorphism(type = PolymorphismType.IMPLICIT)
@MappedSuperClass
public abstract class Element{
  ...
}


@Entity
@DiscriminatorValue("tv")
public class TVElement extends Element{
  ...
}


@Entity
@DiscriminatorValue("episode")
public class TVEpisode extends TVElement{
  ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM