Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这在hibernate中是一个好的设计吗?_Java_Hibernate_Design Patterns_Single Table Inheritance - Fatal编程技术网

Java 这在hibernate中是一个好的设计吗?

Java 这在hibernate中是一个好的设计吗?,java,hibernate,design-patterns,single-table-inheritance,Java,Hibernate,Design Patterns,Single Table Inheritance,在单个表继承中,我有一个父实体服务和一个子实体扩展服务 第三个实体ServiceCollector需要同时包括entites服务和ExtendedService。这是一个固定的需求,通过这种设计,我可以使用多态性来实现它 问题:通常我只需要检索父类服务,所以我通过discriminator列查询它。。。我觉得这对我的紫色房子来说是个糟糕的设计,不是吗 这是一个简单的例子,实际上我有很多服务子类,比如说,对于一个销售不同产品的商店,每个产品都可以有不同的属性 提前感谢。如果每个ExtendedSe

在单个表继承中,我有一个父实体服务和一个子实体扩展服务

第三个实体ServiceCollector需要同时包括entites服务和ExtendedService。这是一个固定的需求,通过这种设计,我可以使用多态性来实现它

问题:通常我只需要检索父类服务,所以我通过discriminator列查询它。。。我觉得这对我的紫色房子来说是个糟糕的设计,不是吗

这是一个简单的例子,实际上我有很多服务子类,比如说,对于一个销售不同产品的商店,每个产品都可以有不同的属性


提前感谢。

如果每个ExtendedService都不是对服务查询的有效响应,听起来更像是通过继承而不是多态性进行模板化。一个简单的解决方法是将服务抽象化,这样您就有了
AbstractService
和一个空类
Service
,它扩展了服务,只定义了
DiscriminatorValue
。(然后ExtendedService扩展AbstractService等)


将discriminator列映射到query,如果其他一切都正常的话,那么这并不是世界末日。就我个人而言,我更倾向于“不雅”而不是“糟糕的设计”,但这只是我的观点。

我不太确定我是否遵循了这一点。。。ExtendedService是服务的子级吗?或者ExtendedService是否从服务继承?ServiceCollector适用于哪里?(ExtendedService的)另一个子类或具有两个属性的类(一个为Service类型,另一个为ExtendedService类型)?ExtendedService从服务继承以扩展它。。。ServiceCollector具有“private Service”属性,因此我也可以附加Service和ExtendedService。因此,拥有一个从抽象实体继承的空实体(服务)是更好的选择吗?在这个人看来,基于我们从您的帖子中获得的关于域对象的极其有限的知识,它可以更准确地建模您的域对象。我不会如此大胆地宣称它普遍“更好”。)两者都有起伏。这种方式应该可以消除“欺骗”鉴别器列的需要,您指出这是一个目标。