问题标签 [named-query]
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.
hibernate - Hibernate named queries and startup performances
We are starting a new projet using JPA/Hibernate. Someone in the team is refusing to use named queries saying that he had performance issues with those before. According to him, the named queries are not only parsed at startup but they also are executed which would slow significantly the startup.
Is it right and if so, is there any configuration to prevent hibernate from executing the queries?
jakarta-ee - 获取用户未读消息的最快方法
抱歉标题,但我不知道如何总结问题:\
我有 2 个实体,用户和消息,映射到我的数据库,我想要一种快速的方法来获取用户的所有未读消息。
这是一些代码:
_
所以,基本上,我需要知道的是是否有任何方法可以避免这样的代码:
我知道它可以通过查询来完成,但我不知道如何在 Java EE 项目中使用它。
如何编写查询以获取当前用户实例的未读消息而不是表中的所有未读消息?
提前致谢。
hibernate - 用于 NOT IN 的 Grails 命名查询
试图想出一种简洁的方法来创建带有 NOT IN 子句的命名查询。限制类似乎没有“不在”构造。有人知道这样做的好方法吗?
解决方案:
注意:必须引用“in”这个词,因为它是保留的。
这些命名查询可以这样使用:
jpa - 属性是对象时的命名查询?
我想在 JPA 中进行此查询:
这工作正常,但我的问题是我Party
只有一个对象,而不是一个 id,我不能让它工作。
在Users
我尝试执行命名查询的 -entity 中,我有以下内容:
我尝试像使用点符号的对象一样实现它,但这不起作用:
partyId
-object内部有一个名为的属性Party
,但它不起作用。是否有任何解决方案,或者我是否必须向 Users-bean 添加一个属性,private int partyID
并在每次Party
插入新属性时填充它Users
?
感谢您的帮助!萨米努尔米
java - 使用 NamedNativeQuery 时出现休眠“列名无效”错误
我最近更改了一个对象以@OneToMany
映射到另一个对象,使用FetchType.LAZY
. 但是,当我尝试使用@NamedNativeQuery
调用 Oracle 函数的 a 加载这些对象的列表时,它会java.sql.SQLException: Invalid column name
为这个新的 OneToMany 映射抛出 a 。但是被标记为LAZY
,它不应该尝试填充这个变量吗?
理论上,我可以更改函数以为此列返回一个空值(基本上是 hack),但我必须将其推广到使用 a@NamedNativeQuery
填充这些对象之一的任何地方。
这对我来说似乎是一个错误。是否有解决方法,我在 Hibernate 的更高版本中缺少或可能修复了某些东西?
我正在使用 hibernate-core 3.3.2.GA、hibernate-entitymanager 3.4.0.GA、hibernate-annotations 3.4.0.GA 和 hibernate-commons-annotations 3.3.0.ga。
jpa-2.0 - 打开 JPA 如何从外键关系中获取结果
早上好。我一直在寻找试图回答这个问题的方法。
如果您的表具有指向另一个表的外键,并且您想要两个表的结果,则使用基本 sql 您将对外键进行内部联接,您将获得您请求的所有结果信息。当您在外键上生成 JPA 实体时,您会在外键列上获得 @oneToone 注释、@oneToMany、@ManyToMany、@ManyToOne 等。我在外键上有@oneToMany,在相关表列的主键上有相应的@ManyToOne 我还在正确的列上有@joinedON 注释...我还有一个基本的命名查询,它将从第一个中选择所有内容桌子。我是否需要像在基本 sql 中那样从两个表中获取信息?或者我有这些注释的事实会为我拉回这些记录吗?要清楚,如果我有基于外键关系与表 B 相关的表 A,并且我想要两个表中的记录,我将根据外键将表 A 连接到 B 或
或其他一些诸如此类的废话(请原谅我的sql,如果它不完全正确,但您明白了)...该查询将选择A和B中的所有列,其中这两个选择的列...这是我的我正在使用的命名查询....
这就是我在我的无状态会话 bean 中调用它的方式......
现在该调用返回表 A 的所有列,但缺少表 B 的列。我的第一反应是更改查询以连接两个表......但这让我想到使用的意义何在JPA 那么如果我只是在写同样的查询,无论如何我都会写,只是在不同的地方。另外,我不想忽略一些简单的事情。那么你说堆栈溢出爱好者呢?如何使用 JPA 取回连接查询的所有数据?
hibernate - 如何使用 Hibernate 的 findByNamedQuery 返回 Long 列表?
我正在使用 Hibernate 的 getHibernateTemplate().findByNamedQuery() 来在 SQL Server 中执行存储过程(出于优化原因)。存储的过程应该返回一个多头列表。
从我所看到的,我可以返回这样一个列表的唯一方法是创建一个专门为 Hibernate 的包装类,并在我的 @NamedNativeQuery 声明的一部分中使用它:resultClass=LongWrapper.class
这真的是使用 Hibernate 的 findByNamedQuery() 函数返回 long 列表的唯一方法吗?
问题是,我需要优化内存分配和性能,因为存储过程将返回接近一百万个 long,所以我不愿意将已经包装的 Long 包装到我自己的包装类中。似乎是不必要的开销。
有什么建议么?
先感谢您!!
hibernate - @NamedQuery 中应用的 TOP 子句
我
@NamedQuery(name="CustomerMarket.findByMarketId", query="SELECT DISTINCT c.marketid FROM CustomerMarket c WHERE c.marketid LIKE :mask")
在我的类 CustomerMarket 定义中命名了查询。
我想获取 350_000 个结果中的前 1_000 个,所以我应用了 setMaxResult:
执行此查询后,我检查了 server.log 并找到了这个
我有正确的数据,前 1_000 条记录,但我想知道是否应用了 TOP 限制以及在哪里。
这个 TOP 子句是如何处理的?
- TOP 应用于 Hibernate 使用的可调用语句,这不会显示在日志中
- TOP 在从 DB 接收结果并在 Java 端过滤数据后应用
- 或者别的什么
我已经设置了 persistence.xml 和 log4j.properties 来显示几乎所有内容,但我认为没有问题,因为我有 SQL 脚本。
编辑:我在两种情况下(有和没有 setMaxResults)都对性能进行了一些测量,并得到了以下时间:
在没有 TOP 的第一种情况下,我每次选择的平均时间消耗为 1400 毫秒。在实施 TOP 的第二种情况下,我的平均时间消耗约为 150 毫秒。
也有人对我说,这个 TOP 实现可能依赖于使用的 Hibernate 方言(我们使用的是 Sybase)。并且出现在日志中的选择与发送到数据库的选择完全相同。但是在这种情况下,将 350k 结果从结果集(或结果如何存储在 Hibernate 会话中)转换为没有任何元数据的结构 List 需要这么长时间是正常的吗?我可以想象在内部它被转换为:
这似乎没有那么复杂,为什么会有这个时差。可能我很天真,因为 Hibernate 是一个具有很多特性的复杂框架。:-D
inheritance - 命名查询 (JPA) 中布尔表达式中的编译错误
在我的项目中,我在 eclipse Indigo 中使用 JPA2 和 Hibernate。
我有一个抽象 BaseEntity 类,它提供了我项目中所有实体所需的一些字段。因此,这个类被我在项目中使用的所有其他实体扩展。
BaseEntity 中的字段之一是布尔字段deleted
,用于将条目标记为已删除(不允许从数据库中物理删除对象)。现在,当我尝试在子类中设置命名查询并在 WHERE 子句中使用“NOT u.deleted”时,我从编译器收到以下错误消息:
无法解析状态字段路径“r.deleted”为有效类型。
在 BaseEntity 的代码下方:
继承类的代码:
任何猜测可能是什么问题?
编辑:根据下面的评论更新代码。
java - 使用参数指定命名查询中的表达式
我可以使用查询参数在命名查询中指定表(对象)、列名或表达式吗?
例如,我想使用一个查询,它允许我在选择整个对象或只选择计数之间切换。
并在java中设置参数,如:
我想通过设置来避免复制和param1
粘贴
或者