我有一个抽象的实体,其他4个实体继承自。这种关系运作良好,但是我想查询抽象实体,以便我得到所有实体而不管它们的类型。我不知道在哪里放置这样的方法,因为父实体dao也是抽象的。
EntityParent(摘要) - > EntityType1,EntityType2,EntityType3,EntityType4
DAO看起来像这样:
EntityParentDAO(摘要) - > EntityType1DAO,EntityType2DAO,EntityType3DAO,EntityType4DAO
TX也是这样的: EntityParentTx(摘要) - > EntityType1Tx,EntityType2Tx,EntityType3Tx,EntityType4Tx
我的项目结构如下: 实体 - >每个实体的DAO - >每个DAO的TX - >服务组合多个TX
有服务,它使用我项目范围内的所有* TX *。这是应该放置标准/ HQL查询的位置吗?这听起来不太对劲。
例如,假设我有一个Car
父实体,我有子实体Coupe
,Sedan
,Minivan
等等,我想要一个汽车列表给定一个对所有人都共有的属性,因此在实体(及其表格)中Car
。给定我正在遵循的结构,我将在哪里放置此查询/方法?
答案 0 :(得分:1)
我不确定我是否遵循事务继承,但为什么不让父dao具体并将其添加到那里?只要父项是实体,并且它具有该字段,您就可以对其进行查询。返回类型将是基类型的列表,但它将是实际类型的实例。
例如:
@Entity
@Table(name = "table")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.INTEGER)
public abstract class ParentImpl implements Parent{}
@Entity
@DiscriminatorValue("1")
public class Entity1Impl extends ParentImpl {}
public interface AbstractDao<T extends Parent> {}
public interface ConcreteParentDao<Parent> {}