Hibernate - 具有作为接口的属性的实体类

马丁

我对这个话题进行了一些研究,我要么找到了非常老的帖子,要么找到了不完全是我想要实现的问题。我已经使用 Hibernate 多年了,我认为自己非常精通它。我之前在我的持久层中使用继承将具有不同类型订单的订单表示为子类(对于医院系统),以获得很好的结果。

我正在开发一个用于商店的新项目,我面临一个问题,我不确定 Hibernate 是否可以解决。基本上,我允许用户构造包含您期望在帐单中包含的信息的 Bill 对象:客户姓名、帐单编号、总金额、税金等。每个 Bill 对象都包含一组 OrderedProduct 对象,这些对象又包含一个 Product 对象和一个数量。只有这个要求,我的项目实际上已经完成,一切都很好。

我的客户现在要求添加,我不知道如何解决。我被要求允许构建 Kit 对象,这些对象只不过是一组具有价格的 Product 对象,以便为经常一起购买的某些东西提供折扣。小菜一碟,我构建了一个 GUI 来构建和保存这些对象,但我现在有一个问题:如何将这些 Kit 对象连接到 Bill 中?我的 OrderedProduct 对象当前绑定到一个 Product 对象,这个模型显然与这个新要求不兼容。

我不能使用继承(据我所知),因为套件基本上只是一个降价的产品列表。如果这两个类都继承自一个公共抽象类,那么一个类如何包含另一个类的集合?

我开始构建它的方式是使用 Billable 接口。允许选择产品/套件的下拉菜单使用以下代码填充自身:

items = FXCollections.observableArrayList(productService.findAllInInventory());

@Override
public List<Billable> findAllInInventory() 
{
    List<Product> products = findProductsInInventory();
    List<Kit> kits = findKitsInInventory();

    List<Billable> billables = new ArrayList<>();

    billables.addAll(products);
    billables.addAll(kits);

    return billables;
}

这允许一个下拉列表包含两种类型的实体,同时与用户完全无缝。我一直在用这个概念调整账单创建 GUI 的其余部分,直到我意识到:实体类的属性不能是接口类型(再次,据我所知)。

对不起,我的解释很长,我希望我想要做的很清楚。我可以想到一些(不太理想的)解决方法,但如果有人知道如何设计这个模型,我会很高兴听到的!

谢谢

马丁

结论是您不能将实体类的持久属性作为接口类型。如果您的设计最终需要这样的结构,您(目前)将不得不重新构建事物。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hibernate不允许我使用实体类名称作为表名称

来自分类Dev

Hibernate不允许我使用实体类名称作为表名称

来自分类Dev

Hibernate / JPA:将常量存储在实体类中吗?

来自分类Dev

Hibernate实体类映射不起作用

来自分类Dev

Spring / Hibernate:Dependend项目中的新实体类

来自分类Dev

Hibernate实体类映射不起作用

来自分类Dev

具有Blob的Wicket和Hibernate实体

来自分类Dev

如何使用JUnit测试来验证实体类-Hibernate @Column注解

来自分类Dev

在hibernate / jpa实体类中定义save方法是否是一个好习惯?

来自分类Dev

Hibernate实体扩展基类,为该实体形成的表在基类中没有属性列

来自分类Dev

Hibernate查询与地图属性实体

来自分类Dev

具有共享主键的 Hibernate 拥有实体端

来自分类Dev

这个Hibernate实体类别如何运作?如何正确定义另一个实体类表示的字段?

来自分类Dev

Hibernate可以自动识别实体类型吗?

来自分类Dev

具有复合主键的Hibernate实体的Infinispan编组错误

来自分类Dev

具有两个以上OneToMany字段的Hibernate实体

来自分类Dev

Hibernate持久实体应具有主键

来自分类Dev

Hibernate保存具有空父ID的子实体

来自分类Dev

具有复合主键的Hibernate实体的Infinispan编组错误

来自分类Dev

如何使用 Hibernate 保存具有相关空对象的实体

来自分类Dev

Hibernate @AttributeOverride对实体有效,但对属性无效

来自分类Dev

从数据源Netbeans / Hibernate中“检索密钥”时,数据库中的实体类挂起

来自分类Dev

Hibernate:多对多关系表作为实体

来自分类Dev

Hibernate:多对多关系表作为实体

来自分类Dev

具有实体类的Symfony2 FormBuilder

来自分类Dev

在合并具有与orphanRemoval设置为true的实体关联的实体时,防止Hibernate删除孤立的实体

来自分类Dev

Spring + Hibernate:未知实体

来自分类Dev

Hibernate返回错误的实体

来自分类Dev

Springboot Hibernate 实体映射

Related 相关文章

  1. 1

    Hibernate不允许我使用实体类名称作为表名称

  2. 2

    Hibernate不允许我使用实体类名称作为表名称

  3. 3

    Hibernate / JPA:将常量存储在实体类中吗?

  4. 4

    Hibernate实体类映射不起作用

  5. 5

    Spring / Hibernate:Dependend项目中的新实体类

  6. 6

    Hibernate实体类映射不起作用

  7. 7

    具有Blob的Wicket和Hibernate实体

  8. 8

    如何使用JUnit测试来验证实体类-Hibernate @Column注解

  9. 9

    在hibernate / jpa实体类中定义save方法是否是一个好习惯?

  10. 10

    Hibernate实体扩展基类,为该实体形成的表在基类中没有属性列

  11. 11

    Hibernate查询与地图属性实体

  12. 12

    具有共享主键的 Hibernate 拥有实体端

  13. 13

    这个Hibernate实体类别如何运作?如何正确定义另一个实体类表示的字段?

  14. 14

    Hibernate可以自动识别实体类型吗?

  15. 15

    具有复合主键的Hibernate实体的Infinispan编组错误

  16. 16

    具有两个以上OneToMany字段的Hibernate实体

  17. 17

    Hibernate持久实体应具有主键

  18. 18

    Hibernate保存具有空父ID的子实体

  19. 19

    具有复合主键的Hibernate实体的Infinispan编组错误

  20. 20

    如何使用 Hibernate 保存具有相关空对象的实体

  21. 21

    Hibernate @AttributeOverride对实体有效,但对属性无效

  22. 22

    从数据源Netbeans / Hibernate中“检索密钥”时,数据库中的实体类挂起

  23. 23

    Hibernate:多对多关系表作为实体

  24. 24

    Hibernate:多对多关系表作为实体

  25. 25

    具有实体类的Symfony2 FormBuilder

  26. 26

    在合并具有与orphanRemoval设置为true的实体关联的实体时,防止Hibernate删除孤立的实体

  27. 27

    Spring + Hibernate:未知实体

  28. 28

    Hibernate返回错误的实体

  29. 29

    Springboot Hibernate 实体映射

热门标签

归档