【发布时间】:2014-08-11 03:54:22
【问题描述】:
我有一个问题,我有一个带有继承 TABLE_PER_CLASS 和三个子表 StationCompany StationAnalysis StationVariant 的基本抽象实体站
@MappedSuperclass
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS )
public abstract class Station {
@Entity
public class StationCompany extends Station {
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
private Company company;
@Entity
public class StationAnalysis extends StationCompany {
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
private Analysis analysis;
@Entity
public class StationVariant extends StationAnalysis {
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@Fetch(FetchMode.SELECT)
private Variant variant;
public interface IStationCompanyRepository extends JpaRepository<StationCompany, Long> {
@Service
public class StationService implements IStationService<StationCompany> {
@Autowired
IStationCompanyRepository stationCompanyRepository;
然后我在 StationCompany 上搜索 findAll,hibernate 使用 union select 进行查询。 我将只搜索 StationCompany 条目。
select x from ( select a from StationCompany union select b from StationVariant union select c from StationAnalysis )
【问题讨论】:
-
但是StationAnalysis 是一个StationCompany,这不能怪hibernate,可以吗?
-
我需要这个。 StationAnalysis 有一个 @ManyToOne 到 Company + Analysis 和 StationVariant to Company + Analysis + Variant 实体
-
请详细说明你想要什么
-
我有三个服务( StationCompanyService / StationAnalysisService / StationVariantService )我想在表格上搜索/创建/保存。但目前只有创建+保存是可以的,搜索是在所有三个表上,而不仅仅是一个。从 StationCompany JpaRepository 中选择一个会加载所有 Table 数据,但我只需要一个 Table 数据。
标签: java hibernate jpa table-per-class