问题标签 [nhibernate-inheritance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
308 浏览

nhibernate - 不寻常的 NHibernate 集合/继承映射

这是我的相关课程:

以下是相关的映射部分:

希望到现在为止一切都清楚。

我正在尝试做的事情如下:选择我的Section对象时,我希望它们只包含“轻量级”ArticleMetadata对象。但是当保存Section到数据库时,我希望 NHibernate 也能持久Article化对象:

目前,SaveOrUpdate退出时没有任何错误,但一个完整的Article对象只能部分保存。也就是说,其Content属性的价值永远不会进入数据库。

单独保存Article( session.Save(new Article(...));) 按预期工作,保存所有映射的属性。

总结一下:我想将ArticleMetadataArticle对象都添加到Section.Articles集合中,并希望它们被适当地保存。这种行为完全可能吗?

0 投票
1 回答
915 浏览

nhibernate - 在 NHibernate 中使用子类时出现“执行多条件时出错”异常

我正在尝试使用 NH 将以下类映射到下表:

表:

这是我尝试使用的hbm:

当我尝试使用以下代码加载所有员工记录(员工和收银员)时:

(其中 T 是员工),我得到以下异常:

我的其他发现:

  1. 如果我向 Cashier 类添加一个新属性,NH 会在 Persons 中而不是在Employees 中查找相应的字段(我将它添加到了我期望的Employees 中)。

  2. 如果我在 Cashier 子类元素中明确指定Employees 表的相同连接(为了添加附加属性),我会得到上面提到的相同异常。

我在这里做错了什么?

PS:恕我直言,即使我在这里做错了,NH 也应该在这里提供一个更具描述性的例外。

0 投票
1 回答
61 浏览

java - Hibernate继承实现问题

我想写一个hbm文件。

我的班级层次结构是

现在,

我正在写另一个类说 ClassMain 它将根据某些条件具有 ClassA 或 classB 的对象类型(例如 ClassMain 中的列类型)

在我的模型课上我写过

现在,请在 hbm 文件中告诉我如何实现这个......???

或告诉我实现相同的其他替代方案。

0 投票
1 回答
373 浏览

hibernate - HQL 更新问题

我有两个实体。数据集市和实体数据。entity_data 扩展了 data_mart。我在 data_mart 和 entity_data 中都有 id 列。entity mart中的data_id是data_mart的foregin key(Pkey over there is id)。

而子表的表结构如下

当我尝试使用 HQL 查询更新表 entity_data 时,下面是由 Hibernate 形成的中间查询

上面的查询给出了错误的结果。在上述update语句的where子句中,id来了。它应该是 data_id。

我不知道这是怎么拍的??

0 投票
1 回答
510 浏览

java - 休眠继承。超类属性

我需要映射一个我无权访问的类。

我的表是自动生成的,它只在子类中生成列,如果我无权使用注释来映射超类,我该如何映射它@Inheritance

我试过@AttributeOverrides(value = { @AttributeOverride( name = "username", column = @Column(name = "username")) })但看起来不起作用

0 投票
1 回答
120 浏览

c# - 当映射字段移动到基类时,NHibernate JOIN 映射失败

有两个具有许多公共字段的模型类,我决定创建一个基类并从它继承它们。

现有的模型类已经带有地图类。

现在在子类中继承的所有公共字段都是虚拟的,以保持 NHibernate 快乐,并且它们都映射正常,除了一个......

这是我的情况:

现在这些是映射类:

每当我运行程序,从这些类(表)中加载数据时,都会失败,说它在 A 表和 B 表上找不到 TouchGuid 列,这是错误:

在此处输入图像描述

是的,A 表和 B 表之间有共同的数据,但我无法更改数据库方案,现在它会增加太多复杂性。

我也需要为基类创建一个表吗?如果可能的话,我想避免创建一个新表。

有什么可能出错的提示吗?

谢谢 !

0 投票
0 回答
363 浏览

java - 如何禁用 JPA 加入继承实体的删除级联?

我有三个实体。两者ResolvedCorpusUnqualifiedCorpus都是Corpus帮助建模和解决某些问题的子类Corpus

通过 JPA 为数据持久性选择联合继承类型。实体定义如下。

指定注释后,@OnDelete我想实现以下目标:

  1. ResolvedCorpus通过 删除 a 时repository.delete(),对应Corpus的也会在 Table 中删除corpus
  2. 当 aUnqualifiedCorpus通过 被删除时repository.delete(),对应Corpus的将保留。

但是,@OnDelete不能按预期工作。顺便说一句,H2 用作嵌入式数据库。

测试代码复制如下。

您可以在此处找到测试应用程序。

我诊断了用于表创建和行删除的 DDL。我怀疑它@OnDelete的目的是相反的,这意味着它控制子实体在基础实体对象被删除时的行为方式。调用时repository.delete(Resolved),生成的 DDLdelete from corpus不是delete from resolved_corpus; 和 for Unqualifieddelete from unqualifieddelete from corpus都按顺序调用。

我想,像我这样的请求应该是 JPA 期望的合理功能,但是在网上搜索后我找不到合适的解决方案。

0 投票
0 回答
77 浏览

java - Hibernate and Inheritance - 需要增加一列(Spring Boot)

我有表A:

我有一张桌子消息:

在我的服务中,我通过以下方式获取所有 A 对象:

所以我想获取所有具有这样字段的A对象,这些字段具有这样的字段MessageMessageAccountAccount.id == user.getId()

现在我有了其他类型的实体A——Message与柱子)。所以我必须在表中存储新对象,但有空列但有附加列-> ->目前这是查找所有对象的参数()问题是如何/在哪里存储列中不同的对象(空,与消息表)。MessageMessageAAMessageuser_idAARepository.findByMessage_Account_Id(user.getId())AMessage

我考虑过Single Table InheritanceDiscriminator value但在这种情况下,当我想A通过 user_id 查找所有对象时,我必须准备一个更大的选择,例如:get all A objects from A where A.Message.Account.id = user_id or A.user_id = user_id

这是一个好方法吗?或者也许我应该使用不同的东西?