问题标签 [hibernate-criteria]

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

hibernate - 如何使用 Criteria API 指定悲观锁?

我正在使用 Criteria API 检索休眠中的对象列表。但是,我需要锁定这些对象,因为同时执行的另一个线程将获得确切的对象,并且只有一个线程会在没有悲观锁定的情况下成功。

我尝试如下,但它不工作。

更新:我在这个语句之后执行更新,所以我希望两个线程都读取不同的行,或者至少第二个线程应该等到第一个线程完成事务并离开锁。

下面是休眠生成的查询。

更新:Pascal Thivent(非常感谢 Pascal)提到的 3.5.2 版本中似乎存在一个错误,我已作为会员加入并关注该问题。希望它会包含在下一个版本中。

但是,我尝试在这里使用另一种方法session.buildLockRequest()... 但我不太清楚如何使用它,并且使用下面的代码根本没有任何效果。

0 投票
2 回答
5935 浏览

hibernate - 使用 Gorm 查询列的子集

假设我有以下 Domain 类:

我有一个不需要显示的列表视图largeCoverArtImage,如何使用 GORM Criteria 执行以下 SQL 查询?

0 投票
2 回答
6398 浏览

java - Hibernate Criteria API 多重连接

我的休眠实体如下:

文档如下所示:

基本上我想写的查询是:

如何使用休眠标准 api 执行此操作?

0 投票
1 回答
3272 浏览

java - 当条件引用嵌入属性时无法解析属性

我似乎无法使用引用嵌入式类中的属性的标准创建查询。当我使用“entity.embedded.property”时它失败了。如果我为自己创建一个“entity.embedded.property”的别名,则查询有效......任何提示将不胜感激......

0 投票
2 回答
913 浏览

java - 休眠注解

我在 MySQL 中创建了一个表:

'object_label' 与列 'id' 和 'name'。我在这个表中插入了值。

在java中我创建了新类-'ObjectLabel':

在 hibernate.cfg.xml 中定义:

我想从桌子上得到价值,我定义了服务:

我得到空列表。

在数据库 'select * from 'object_label'' 返回值)

我的代码有什么问题?

谢谢!

0 投票
3 回答
2943 浏览

java - 如何克服 Hibernate Criteria 和 Example API 的限制?

我所在的位置是,我们公司拥有高度可配置的数据库搜索服务,因此以编程方式配置查询非常有用。Criteria API 很强大,但是当我们的一位开发人员重构其中一个数据对象时,在我们运行单元测试或更糟糕的是,在我们的生产环境中运行并运行之前,标准限制不会表明它们已被破坏。最近,由于这个问题,我们有一个重构项目的工作时间出乎意料地增加了一倍,这是项目计划中的一个差距,如果我们知道它真正需要多长时间,我们可能会采取另一种方法。

我想使用 Example API 来解决这个问题。如果我们在真正的 POJO 属性上指定“where”条件,Java 编译器会大声指出我们的查询是错误的。但是,Example API 中的功能只有这么多,并且在很多方面都受到限制。举个例子

在这里,正在查询属性“name”(其中 name 像 'P%'),如果我要删除或重命名字段“name”,我们会立即知道。但是房产的“价格”呢?它被排除是因为 Product 对象有一些默认值,所以我们将“价格”属性名称传递给排除过滤器。现在,如果“价格”被删除,这个查询在语法上将是无效的,直到运行时你才会知道。瘸。

另一个问题 - 如果我们添加第二个 where 子句会怎样:

由于调用了 enableLike(),此示例将匹配促销文本“折扣高达 10%”,以及“折扣高达 10,000,000 美元”或任何其他匹配的内容。一般来说,Example 对象的查询范围修改,例如 enableLike() 或 ignoreCase() 并不总是适用于检查的每个属性。

这是第三个也是主要的问题——其他特殊标准呢?使用标准示例框架无法让每件产品的价格都超过 10 美元。无法按促销、降序对结果进行排序。如果 Product 对象加入了某个制造商,则也无法在相关的制造商对象上添加标准。也没有办法在制造商的标准上安全地指定 FetchMode(尽管这通常是 Criteria API 的一个问题 - 无效的获取关系会默默地失败,甚至更像是一个定时炸弹)

对于上述所有示例,您将需要返回到 Criteria API 并使用属性的字符串表示来进行查询 - 同样,消除了示例查询的最大好处。

Example API 有哪些替代方案可以获得我们需要的编译时建议?

0 投票
3 回答
10111 浏览

java - 休眠标准投影

正如问题标题所说,我正在尝试制作一个仅查询几个表属性的投影标准。

所以我有一个人表/类,它有大约 40 个属性。我希望我的标准能够获得动态的属性数量,比如说 10、11 或 12(SQL 术语select firstname, lastname from person),我这样做是这样的:

它返回retList元素不是来自Person.class

信息 [AWT-EventQueue-0] (UserGroupManagerApp.java127) - [Ljava.lang.Object;@14b9b80
致命 [AWT-EventQueue-0] (Login.java78) - java.lang.ClassCastException: [Ljava.lang.Object; 无法转换为 usergroupmanager.model.db.Person java.lang.ClassCastException: [Ljava.lang.Object; 无法转换为 usergroupmanager.model.db.Person

请帮忙,现在我列出了所有 40+ attr,它占用了查询时间,我不喜欢它。我也在寻找可以帮助我解决这个问题的替代解决方案。我读过ResultTransformer但还没有找到如何在我的情况下使用它。

0 投票
1 回答
2033 浏览

java - Hibernate 多对多标准投影

编辑>我处于死胡同...所以我可以继续寻找主要原因..请告诉我如何为具有多个 eq 限制的多对多关系制定一个简单的标准,例如,如何在此处显示的示例中让说英语和德语的人...

我的情况是这样的,我有两个班级的人和语言,有一个,m 的关系。我正在使用一个标准来进行搜索 - 获取所有说 ex 的人。英语和德语

标准

有趣的是,如果我只为一种语言设置它,我会得到正确的人员列表,但对于不止一种语言我没有得到,我重新检查了我的基础并设置了一个人专门说两种语言。但最让mi提示的是,Object[]中的投影结果在Set语言应该在的地方,有NULL值……

请帮助tnx

0 投票
3 回答
6231 浏览

grails - groovy / grails / 单元测试 / createCriteria.get

我可以模拟调用:

和:

如建议:

http://davistechyinfo.blogspot.com/2010/01/mocking-hibernate-criteria-in-grails.html

但对于:

这种方法失败了——可能是因为“get”是一个关键字,而“list”不是。任何人都可以建议 - 能够在域类中模拟这个应该是可能的,而不是简单地放弃使用createCriteria().get{}.

建议非常感谢,

亚历克斯

0 投票
1 回答
1189 浏览

sql - Hibernate简单条件查询解决问题

我遇到了一个非常简单的标准查询问题:

当然,这会导致没有用户。

在 SQL 中我也试过了:

当然也没有用户

SQL中的两种解决方案,我认为不是很有效:

其他:

这些结果给了我很好的信息,但我认为这不是正确的方法。以及我将如何使用 Criteria API 在 Hibernate 中实现这一点。

或者我的数据库中需要一个新表?