问题标签 [hbmxml]

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 投票
1 回答
242 浏览

java - 具有未知元素类型的休眠映射

我想知道是否可以定义一个未知(对象)元素类型的地图。
我有一个定义了以下地图的对象:

有时一个属性可以是一个String,有时它可以是一个java.util.Date
在Hibernate中有什么优雅的方式来处理这样一个数据对象吗?
顺便说一句,我正在使用 HBM XML

谢谢!

0 投票
2 回答
5442 浏览

hibernate - Hibernate 4:一个类映射两个表 - 如何在两个表上保留一个对象?

我有这个类 Person 映射两个表:Persons 和 PersonsAUD(审计):

我正在尝试将此对象保存在两个表中,如下所示:

但只插入第一行,不插入审计行;可能休眠检查该人的状态并确认已保存。

有没有机会强制休眠在两个表中保存同一个对象?

提前致谢。

0 投票
1 回答
3889 浏览

java - 带有实体名称的休眠查询

我正在使用 POJO 来定义两个表(主表和备份表)。两个 XML 类都引用同一个 Java 类。

参考:将同一个 POJO 映射到 Hibernate XML 映射文件中的多个表

POJO定义:

我能够创建不同的表。并且还使用

API 我可以单独为这些表添加新记录。

检索时,我正在使用 HQL

它返回了 Table1 和 Table2 中的所有记录。如果我尝试给 Table2,则会显示错误“Table2 is not mapped”

是否有任何可以单独从表 1 和表 2 中检索记录。

0 投票
1 回答
583 浏览

java - SaveOrUpdate 跳表

休眠 V.4.1.8 最终版

春季:3.1.3 发布

场景:在客户注册过程中,用户将填写完整的来自。他可以在完成表单之前多次保存表单,然后单击提交以完成内容。只有在最终提交后,应用程序才会创建客户 ID。为了实现这个功能,我创建了 2 个基于相同 POJO 的表。参考: 将同一个 POJO 映射到多个表

问题: 将数据保存到客户表中时。hibernate 将记录插入地址表并直接插入家庭表,但忽略客户表。因此抛出异常:无法添加或更新子行:外键约束失败

请在 custDetail 对象进入备份表和客户表时查看 sql 序列。

插入备份表

插入客户表

表定义:

后桌:

保存方法:

批准客户方法

我在客户表上没有任何异常。我尝试使用 session.clear/flash/evict/merge/replicate 等分离对象,使用 DOZER 但没有进展。即使我试图删除级联选项。

我不确定哪里出了问题。请帮忙。

问候,

希里什语

0 投票
1 回答
1946 浏览

c# - 一种为 NHibernate 映射 .hbm.xml 文件配置构建操作的方法?

有没有办法从 NHibernate 映射 .hbm.xml 文件本身或至少另一个配置 xml 文件中为 NHibernate 映射 .hbm.xml 文件配置构建操作?

尽管我很欣赏 Microsoft Visual Studio 2010 的许多功能,但我不喜欢通过执行以下操作手动将“嵌入式资源”设置为此 hbm.xml 文件的构建操作:

  1. (不喜欢手动方法)(Microsoft 支持文档)右键单击感兴趣的文件,然后选择属性。
  2. (不喜欢手动方法)(Microsoft 支持文档)在“属性”对话框中,找到“生成操作”属性。默认情况下,此属性设置为内容。单击该属性并将 Build Action 属性更改为 Embedded Resource。

另外,我不喜欢在 CSharp 代码中以编程方式进行操作。有没有办法从 NHibernate 映射 .hbm.xml 文件本身或至少另一个配置 xml 文件中为 NHibernate 映射 .hbm.xml 文件配置构建操作?有人可以建议我如何使用xml来做到这一点吗?

0 投票
1 回答
1905 浏览

c# - 当我尝试使用 NHibernate Session 保存到包含复合键的桥表时,为什么会出现外键冲突?

我们的办公室团队正在工作和使用 .NET Framework 4 和 NHibernate 3.3.1 的 ASP.NET 项目

我有一个名为 AllResourcesInfo 的 POCO 域类(它最终映射到数据库中的 Resource 表,该表内部连接到其他一些表,但为了简单起见,假设 AllResourcesInfo 映射到 Resource 表)。

我还有一个名为 Section 的 POCO 域类(最终映射到数据库中的 Section 表)

我还有一个名为 ResourcesInSectionBridge 的 POCO 域类(它最终映射到数据库中名为 ResourcesInSectionBridge 的桥表)

正如命名约定所暗示的,ResourcesInSectionBridge 是 Resource 和 Section 之间的桥接表。

由于 ResourcesInSectionBridge 包含一个复合键,我创建了一个名为 ResourcesInSectionIdentifier 的 POCO 复合键标识符,并且还定义了一个 Equals(object obj) 方法和一个 GetHashCode 方法。

当我使用 NHibernate Session 为 ResourcesInSectionBridge 表保存一个新条目时,我收到一个错误:

异常详细信息:System.Data.SqlClient.SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_ Resources _Resou__22CA2527”冲突。冲突发生在数据库“perls”、表“dbo.Resources”、列“ResourceDatabaseID”中。该语句已终止。

AllResourcesInfo.hbm.xml 的映射如下:

Section.hbm.xml 的映射如下:

最后,我们的 ResourcesInSectionBridge.hbm.xml 映射文件如下:

最后,我们尝试在 ResourcesInSectionBridge 表中创建条目的 C# 代码如下:

当我使用 NHibernate Session 为 ResourcesInSectionBridge 表保存一个新条目时,我收到一个错误:

异常详细信息:System.Data.SqlClient.SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_ Resources _Resou__22CA2527”冲突。冲突发生在数据库“perls”、表“dbo.Resources”、列“ResourceDatabaseID”中。该语句已终止。

你能解释一下为什么会抛出这个错误吗?另外,你能否建议我如何解决这个问题?

0 投票
4 回答
1628 浏览

c# - 使 NHibernate“翻译”值为 System.Guid.Empty 的 C# POCO Guid 属性保存为数据库唯一标识符字段的 NULL?

我们的办公室团队正在工作和使用 .NET Framework 4 和 NHibernate 3.3.1 的 ASP.NET 项目

我有一个名为 AllResourcesInfo 的 POCO 域类(它最终映射到数据库中的 Resource 表,该表内部连接到其他一些表,但为了简单起见,假设 AllResourcesInfo 映射到 Resource 表)。

我还有一个名为 Department 的 POCO 域类(最终映射到数据库中的 Department 表)

AllResourcesInfo 可能与部门具有多对一关系。

如果 AllResourcesInfo 的实例属于某个部门,则 AllResourcesInfo.DepartmentDatabaseID 具有有效的 DepartmentDatabaseID,它位于 Department 实体中。

但是,如果 AllResourcesInfo 的实例不属于某个部门,则 AllResourcesInfo.DepartmentDatabaseID 在数据库中具有 NULL 值。数据库。

当我使用 NHibernate 从 AllResourcesInfo 表中检索(基本上 NHibernate 对数据库进行读取)值时,NHibernate 将使用 00000000-0000-0000-0000-000000000000 值填充 AllResourcesInfo.DepartmentDatabaseID 的 C# POCO 属性(即 System.Guid .Empty value ) 如果 AllResourcesInfo 不属于某个部门

但是,当我使用 NHibernate Session 保存不属于任何部门的 AllResourcesInfo 的全新 C# POCO 实例时,我使用 00000000-0000-0000-0000-000000000000 值填充 AllResourcesInfo.DepartmentDatabaseID 的 POCO 属性(即系统.Guid.Empty value ) 但是数据库显然会抛出错误,因为数据库的 Department 表中显然不存在 Guid 值 00000000-0000-0000-0000-000000000000。

总而言之,当我们希望 NHibernate Session Save 将 uniqueidentifier 字段值保留为空时,NHibernate Session Save 无法在数据库中保存(或保留)值为 NULL 的 uniqueidentifier 字段。

有人可以告诉我我们如何确保 NHibernate“翻译”值为 System.Guid.Empty 的 C# POCO Guid 属性被保存(或保留)为 NULL 用于数据库 uniqueidentifier 字段值?

0 投票
1 回答
974 浏览

nhibernate - 带有 access="field" 映射的 Hibernate Criteria API

我在使用 Hibernate Criteria API 时遇到问题:

如果运行此语句,则会抛出 NHibernate.QueryException:

无法解析属性:名称:MyClass

在 StackTrace 中:

在 NHibernate.Persister.Entity.AbstractPropertyMapping.ToType(String propertyName)

MyClass.hbm.xml 文件具有这种方式映射的属性:

我认为问题的出现是因为 hibernate 无法访问 MyClass 的属性“名称”,因为它是映射的access="field",但是由于应用程序设计要求,我无法更改这种访问属性的方式。这个想法是通过使用 Criteria API 和 lambda 表达式来创建查询,以避免硬编码的字符串属性名称。

我也尝试过使用具有相同异常结果的表达式:

有人知道我如何向 Criteria API 指示 MyClass 的属性映射为access="field"

非常感谢帮助。

0 投票
2 回答
917 浏览

java - 休眠是否检查列的长度?

我只能访问 db 和只读访问 hbm.xml 文件。需要增加列大小。我在此表的 hbm.xml 文件中的表/列定义中看到没有属性长度。在这种情况下,应用程序是否应该使用增加的列大小?

0 投票
1 回答
18554 浏览

hibernate - 在hibernate xml映射中映射没有主键的数据库视图

我创建了一个仅用于获取数据的视图(只读)

视图:Grid_View

> 我的休眠 hbm 文件

> 因为在我看来它们不是主键,所以我没有在我的映射中提到 id 字段。 但在休眠状态下,id 是必需的。

> 我的问题

如何在休眠映射文件中进行没有 id 的映射。而且它们不是具有唯一值的列,因此它们没有任何机会使它们成为键。请帮我解决这个问题