问题标签 [nhibernate-4]

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 回答
47 浏览

hibernate - Hibernate Envers 审计

我将 Hibernate4 与 envers 一起用于审计日志记录目的。

我有一张桌子:

Hibernate 已经创建了一个审计表PRODUCTS_AUD

每当Product描述发生变化时,Hibernate 都会跟踪先前记录中的变化。

有些记录只是Product_desc改变了。某些记录仅product_fees针对特定的Product_id. 他们是一种找出修订之间所有更改字段的方法吗?

0 投票
1 回答
1129 浏览

c# - Parallel.ForEach 与 NHibernate 一起使用导致 SQL Server 锁

首先,我不是多线程和并行编程方面的专家。

我正在尝试优化旧版应用程序 ( .Net 4, NHibernate 2.1) 的性能。

**到目前为止,升级NHibernate不是优先事项,但正在筹备中。

随着时间的推移,随着数据的增长,性能已经成为一场噩梦。我见过的一个项目是一个Parallel.ForEach语句,它调用一个获取和更新复杂实体(具有多个关系 - 属性和集合)的方法。

这段代码具有以下形式(为清楚起见进行了简化):

SQL Server 间歇性地报告数据库锁定错误,并出现以下错误:

Transaction (Process ID 20) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction

我怀疑这是由于发生了一些导致死锁的竞争条件,即使ISessions是分开的。

最多可以有 1000 个项目,每个项目都有处理的ICollection<TheClass>属性和子集合,生成许多SELECTUPDATE语句(使用“NHibernate Profiler”确认)

有没有更好的方法以并行方式处理这个问题,或者我应该将代码重构为传统循环?

我知道我也可以使用以下方法实现我的代码:

  1. foreach同一ISession上下文中的循环
  2. 使用无状态会话
  3. 设置Environment.BatchSize为合理的值

或者

  1. 使用 SQL 批量复制

Parallel.ForEach我还阅读了很多关于 SQL Server 死锁和容易陷入陷阱的好信息 :

  1. SQL 事务已死锁
  2. 使用 SQL 大容量复制作为替代方案
  3. 数据和任务并行的潜在陷阱
  4. 具有 SQL Server 数据库调用的多线程 C# 应用程序
0 投票
2 回答
2217 浏览

c# - 如何在 HQL 中选择布尔文字?

我可以像这样在 HQL 中选择 int 和 string 文字:

select 'a string' as StringLiteral, 1 as IntLiteral from Eg.MyClass

但我还没有找到选择布尔文字的方法。我试过了select true ...select new bool true ...但是那些会导致 HQL 语法异常。

有没有办法在 HQL 中选择布尔文字?

我找到了一种解决方法(select case when (1=1) then true...),但这似乎效率低下......

0 投票
0 回答
371 浏览

c# - 如何使用 NHibernate 急切获取多级对象

我有以下实体:

以及它们的映射:

我想使用 NHibernate 4 获取 Eager 所有级别当我尝试通过 ID 获取单个父级时,例如:

我得到“不能同时取多个包”异常

0 投票
1 回答
289 浏览

c# - NHibernate 认为按列排序不在选择中

我正在尝试获取查询结果的第 2 页,这是我的代码构建的准备好的语句 SQL 查询:

然后将其参数化等,并SetFetchSize()SetFirstResult()构造的IQuery. 在第 1 页,这工作正常,但在第 2 页我得到这个异常:

我非常清楚地选择*了,所以我认为异常消息可能是正确的,如果我将其更改为SELECT DISTINCT Contents.*, Contents.Created足够肯定我会得到一个System.Data.SqlClient.SqlException: The column 'Created' was specified multiple times for 'q_'.

那么这个错误信息的真正含义是什么?

我正在使用 NHibernate 4.0.4.4000 和 SQL Server Express 2008 64 位 10.0.6。

0 投票
0 回答
56 浏览

spring - 无法解析 Hibernate4 的类

我实际上是在尝试在新的 Spring Boot 应用程序中导入外部 dao 和外部持久性。我以前从未这样做过,根据另一个开发人员的解释,我创建了:

应用程序上下文.xml:

然后是 Spring-hibernate-config.xml:

问题是它找不到“org.springframework.orm.hibernate4.LocalSessionFactoryBean”

我是不是忘记了什么?

编辑:我试图在 pom.xml 中强制休眠 4(添加一个属性并在最后声明休眠依赖项):

但它并没有解决问题,我在配置 xml 中仍然有“无法解析类或包 hibernate4”....

我完全不知道如何解决这个问题......