当前位置: 首页 > 知识库问答 >
问题:

将hibernate实体加载到子子类中

应嘉容
2023-03-14

我有以下情况:

class Animal (holds all attributes, of course public getter+setter)
class Dog extends Animal (holds only specific methods)
class Cat extends Animal (holds only specific methods)

我想把所有动物都放在动物桌上。但是当我加载它们时,我想说它们是在哪个子类中加载的。在这种情况下,动物在理论上是抽象的。

这样的事情可能吗:

session.createCriteria( Animal.class ).addRestriction( .. ).mapTo( Cat.class ) ...

问题是,否则我看不出有任何可能从装载的动物投射到猫。:(

我用的是Hibernate4.2

共有1个答案

公孙弘深
2023-03-14

你不选择你想要的实体吗?

猫是动物的一部分

SELECT cat FROM Cat cat ...

将仅返回 Cat 实体,即使您采用单表策略。

 类似资料:
  • 我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。

  • 我想知道是否有办法微调JPA/Hibernate以管理以下用例。我有以下对象模型: 然后我执行以下代码: 我想要实现的是: > 根据用例调整Hibernate,即不更改实体类; 使Hibernate执行两个查询: 上面的代码片段与Child-Sunder lazy fetch的基本行为是: (1)执行对实体的一个查询; (2)对实体的所有实体执行一个查询; (3)n个查询,每个实体一个。 通过阅读

  • 我有一个要求,我需要将搜索关键字应用于父实体(客户)的名称和状态,以及子实体 Order 的名称属性。 并在查询中包含子表,我正在执行以下操作 Hibernate正在生成下面的查询,但是我需要的是将order.name之类的比较添加到父块中。 我想要的是(lcase(order_.NAME)像?)在父块内。所以我想要的是以下内容 (this_名称)像? 或大小写(this_.状态) 像 ? 或大小

  • 问题内容: 我有两个分别以双向一对多关系存在的实体类 A 和 B。 A.java: B.java 在一个简单的控制台应用程序中,我从数据库中获取了特定的 A 行,并尝试删除其详细信息 B 行(随机),但是 JPA / Hibernate* 不仅删除了该行-甚至没有向该行发出任何 DELETE 语句。数据库。删除 B 行的唯一方法是从 A.java 的集合( LinkedHashSet )中删除相应

  • 问题内容: 我正在尝试将实体扩展为用于填充超类字段的非实体。问题是,当我尝试保存它时,Hibernate会抛出MappingException。这是因为即使我将ReportParser强制转换为Report,但运行时实例仍然是ReportParser,因此Hibernate抱怨它是一个未知的实体。 ReportParser仅用于填写字段。 尝试将其投射到报告中并保存 在转移到ORM之前,我已经使用

  • 问题内容: 我在父方使用批注具有一对一关系。现在,我想自己保存子实体。 例如,我有和作为孩子的实体,我需要保存(父的id属性设置为之后的课程)。但是,当使用这种安排时,我在下面列出了一个例外… 为什么hibernate不允许这样做的任何想法?更清楚地说,我的代码如下… ParentEntity: ChildEntity: 我尝试保存的方式是… 关于如何尝试保存子实体,任何指针将不胜感激。 问题答案