问题标签 [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.
nhibernate - 不寻常的 NHibernate 集合/继承映射
这是我的相关课程:
以下是相关的映射部分:
希望到现在为止一切都清楚。
我正在尝试做的事情如下:选择我的Section
对象时,我希望它们只包含“轻量级”ArticleMetadata
对象。但是当保存Section
到数据库时,我希望 NHibernate 也能持久Article
化对象:
目前,SaveOrUpdate
退出时没有任何错误,但一个完整的Article
对象只能部分保存。也就是说,其Content
属性的价值永远不会进入数据库。
单独保存Article
( session.Save(new Article(...));
) 按预期工作,保存所有映射的属性。
总结一下:我想将ArticleMetadata
和Article
对象都添加到Section.Articles
集合中,并希望它们被适当地保存。这种行为完全可能吗?
nhibernate - 在 NHibernate 中使用子类时出现“执行多条件时出错”异常
我正在尝试使用 NH 将以下类映射到下表:
表:
这是我尝试使用的hbm:
当我尝试使用以下代码加载所有员工记录(员工和收银员)时:
(其中 T 是员工),我得到以下异常:
我的其他发现:
如果我向 Cashier 类添加一个新属性,NH 会在 Persons 中而不是在Employees 中查找相应的字段(我将它添加到了我期望的Employees 中)。
如果我在 Cashier 子类元素中明确指定Employees 表的相同连接(为了添加附加属性),我会得到上面提到的相同异常。
我在这里做错了什么?
PS:恕我直言,即使我在这里做错了,NH 也应该在这里提供一个更具描述性的例外。
java - Hibernate继承实现问题
我想写一个hbm文件。
我的班级层次结构是
现在,
我正在写另一个类说 ClassMain 它将根据某些条件具有 ClassA 或 classB 的对象类型(例如 ClassMain 中的列类型)
在我的模型课上我写过
现在,请在 hbm 文件中告诉我如何实现这个......???
或告诉我实现相同的其他替代方案。
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。
我不知道这是怎么拍的??
java - 休眠继承。超类属性
我需要映射一个我无权访问的类。
我的表是自动生成的,它只在子类中生成列,如果我无权使用注释来映射超类,我该如何映射它@Inheritance
?
我试过@AttributeOverrides(value = { @AttributeOverride( name = "username", column = @Column(name = "username")) })
但看起来不起作用
java - 如何禁用 JPA 加入继承实体的删除级联?
我有三个实体。两者ResolvedCorpus
和UnqualifiedCorpus
都是Corpus
帮助建模和解决某些问题的子类Corpus
。
通过 JPA 为数据持久性选择联合继承类型。实体定义如下。
指定注释后,@OnDelete
我想实现以下目标:
- 当
ResolvedCorpus
通过 删除 a 时repository.delete()
,对应Corpus
的也会在 Table 中删除corpus
; - 当 a
UnqualifiedCorpus
通过 被删除时repository.delete()
,对应Corpus
的将保留。
但是,@OnDelete
不能按预期工作。顺便说一句,H2 用作嵌入式数据库。
测试代码复制如下。
您可以在此处找到测试应用程序。
我诊断了用于表创建和行删除的 DDL。我怀疑它@OnDelete
的目的是相反的,这意味着它控制子实体在基础实体对象被删除时的行为方式。调用时repository.delete(Resolved)
,生成的 DDLdelete from corpus
不是delete from resolved_corpus
; 和 for Unqualified
,delete from unqualified
和delete from corpus
都按顺序调用。
我想,像我这样的请求应该是 JPA 期望的合理功能,但是在网上搜索后我找不到合适的解决方案。
java - Hibernate and Inheritance - 需要增加一列(Spring Boot)
我有表A:
我有一张桌子消息:
在我的服务中,我通过以下方式获取所有 A 对象:
所以我想获取所有具有这样字段的A
对象,这些字段具有这样的字段Message
Message
Account
Account.id == user.getId()
现在我有了其他类型的实体A
——Message
与柱子)。所以我必须在表中存储新对象,但有空列但有附加列-> ->目前这是查找所有对象的参数()问题是如何/在哪里存储列中不同的对象(空,与消息表)。Message
Message
A
A
Message
user_id
A
ARepository.findByMessage_Account_Id(user.getId())
A
Message
我考虑过Single Table Inheritance
,Discriminator value
但在这种情况下,当我想A
通过 user_id 查找所有对象时,我必须准备一个更大的选择,例如:get all A objects from A where A.Message.Account.id = user_id or A.user_id = user_id
。
这是一个好方法吗?或者也许我应该使用不同的东西?