dao,tx,服务结构:在哪里放置查询抽象实体的方法



我有一个抽象实体,其他4个实体从中继承。这种关系运行良好,但是我想查询抽象实体,以便获得所有实体,而不管它们的类型如何。我不知道把这样的方法放在哪里,因为父实体dao也是抽象的。

EntityParent(抽象)->EntityType1、EntityType2、EntityType3、EntityType4

DAO看起来像这样:

EntityParentDAO(抽象)->EntityType1DAO、EntityType2DAO、EntityType3DAO、EntityType 4DAO

TX看起来也是这样的:EntityParentTx(摘要)->EntityType1Tx、EntityType2Tx、EntityType 3Tx、Entity Type4Tx

我的项目结构如下:实体->每个实体的DAO->每个DAO的TX->组合多个TX的服务

服务,它使用我项目范围内的所有*TX*。这是应该放置标准/HQL查询的地方吗?这听起来不太对。

例如,假设我有一个Car父实体,我有子实体CoupeSedanMinivan等等,我想要一个汽车列表,给定一个所有人都通用的属性,因此在实体(及其表)Car中。给定我所遵循的结构,我将把这个查询/方法放在哪里?

我不确定我是否遵循事务继承,但为什么不将父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> {}

最新更新