簡體   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