我想了解hibernate是如何在内部或其他模型中执行hql查询的,hql查询引擎是如何工作的。请建议一些相同的好的链接?
阅读的原因之一是下面的问题。
Class Branch
{
//lazy loaded
@joincolumn(name="company_id")
Company company;
}
因为company是重对象,所以它是惰性加载的。
现在我有了hql查询
"from Branch as branch where branch.Company.i
我需要获得正确的HQL查询,而不是下面的SQL查询。
select * from question where qid >=all (select qid from Question where uid = 1);
我想我们不能在HQL中使用>=all()。如果我错了,请纠正我。并为上述SQL查询给出正确的HQL查询。
正在等待回复...帮助。
我正在使用PostgreSQL和JPA/Hibernate。我需要构建一个包含PostgreSQL regex比较运算符(name ~ 'pattern')的HQL查询。我有以下方言:
public class PostgreSQLExtendedDialect extends PostgreSQL95Dialect {
public PostgreSQLExtendedDialect() {
registerFunction("regexp_matches", new SQLFunctionTemplate(BooleanType.I
我在编写Hql查询时遇到了一个问题。
我有一个名为MyTable的mysql表,它的列名为Id、Column1、Column2和Type.所有字段均为整型。
select查询基于“Type”列中的值。如果“类型”列中的值为0,则基于Column1中的select查询的值。如果类型列中的值为1,则select查询将基于column2中的值。
我已经使用'case when then‘is SQL成功地编写了查询。但是当用作Hql查询时,相同的查询会给出异常
SQL查询:
select * from MyTable where case when Type=0 then Column1=
问题:在hql查询的子句中,只匹配逗号分隔列表的第一项!
HQL查询如下:from News where 93 IN (pictureIds)
新闻实体是:
public class News {
String id;
String pictureIds; // comma separated list of pictureIds
}
注意:如果我更改HQL查询并硬编码pictureIds,其结果是正确的!
如何更改查询以解决问题?
我希望用HQL重写TSQL查询。下面是我想要转换为HQL查询的T查询。下面的The查询工作正常.
DECLARE @D_Id INT = 120
DECLARE @DR_Id INT = 1100
IF @D_Id <> 120
BEGIN
SELECT
d.D_Name
FROM
Department AS d
WHERE
d.D_Id = @D_Id
END
ELSE
BEGIN
SELECT
DR.DR_DepartmentOther
FROM
我有一个包含8000个项目的整数数组列表。
我使用setParameterList方法在hql中设置了该数组列表。
这只是一个查询示例
return (Integer) sessionFactory.getCurrentSession().createQuery("update data where Id in (:list)").setParameterList("list", arrayList).executeUpdate();
但是在执行查询之后,我得到了这个错误。
java.lang.StackOverflowError
at org.hibe
我是使用C#的Nhibernate的新手。
下面是我的SQL查询:
select * from advis_productattributes where ID in
(select attributeid from advis_productattributes_products where productid=1);
我知道HQL中的简单select查询:
string hql = @"select p from ProductAttributes_Products p.ProductId :id";
var query = new SimpleQuery<Pro
是否可以使用表table表值用户定义函数作为HQL查询的一部分?
这里,是一个如何创建自定义方言扩展的示例,但在本例中使用的是标量UDF。
假设我有以下t-sql UDT
CREATE FUNCTION [dbo].[getSuitableProjects]
(
@userID INT
)
RETURNS @result TABLE
(
ProjectID INT
)
AS
-- body of the function ..
我希望能够编写以下hql -第二行是伪代码,简单地说,我想调用我的函数作为hql查询的一部分-真正的查询是更复杂的,它
我在执行最基本的查询时遇到了映射异常。这是我的域类:
public class Project
{
public virtual string PK { get; set; }
public virtual string Id { get; set; }
public virtual string Name { get; set; }
public virtual string Description { get; set; }
}
和映射类:
public class ProjectMap :ClassMap<Project>
{
publ
我有一个查询生成器,它构建了一个参数化的HQL查询,用于进行OData过滤。当构建对NULL属性的查询时,HQL的where claluse如下所示.
... where $entity.Property is ?
...where ?被值为NULL的参数替换。但是,当我使用上面的查询调用session.CreateQuery(hql)时,执行的SQL不是is null查询,而是被填充为NULL的=@p1查询。这显然不是我想做的。
如果我将HQL显式地设置为$entity.Propery is null,那么一切都很好,但是我觉得我遗漏了一些东西或者做了一些愚蠢的事情。
这里发生什么事情?
有人能为下面给出的MySQL查询提供等效的Hibernate查询吗?我没有尝试过去几天,但没有成功。
这是MySql查询
SELECT * FROM product WHERE category_id IN (SELECT id FROM category WHERE parent_category_id IN (SELECT id FROM category WHERE parent_category_id=53));
我编写的Hibernate查询是。
public List<Product> findBy2ndLevel(String categoryName) {
我确信我忽略了一些显而易见的事情
下面的静态查询运行得很好
hqlQuery = "select user from User as user where user.id = 'userid' ";
但是当我将查询参数化时
hqlQuery = "select user from User as user where user.id = :me ";
Query query = session.createQuery(hqlQuery);
我在构建查询时得到了一个令人讨厌的堆栈转储。我忽略了什么?
Exception in thread "
我需要hql查询,它应该返回Map作为结果,我尝试了hql new map查询,但它返回的map列表如下
Session session = sessionFactory.getCurrentSession();
String HQL_QUERY = "select new map(user.id as id, user.fullName as fullName)
from User user";
List<Map<String,String>> usersList = session.createQuery(HQL_QU
每次尝试运行此子查询时,都会收到HQL错误。这种类型的查询应该可以在SQL中工作,对吗?HQL如何以不同方式处理这种类型的查询?
SELECT *
FROM Table
WHERE user_Id IN (
SELECT a.user_Id
FROM Table a
WHERE a.color='Blue')
看起来HQL不支持IN?我收到一个错误:“无法识别‘SELECT’附近的输入”
我有hql查询,它具有按.In分页结果分组的结果,我希望获得所有结果的计数,以便在分页中显示。在没有.I组的查询中,编写一个实用程序,在hql查询中创建查询计数,如下所示
select u
from Personel u
where u.lastname='azizkhani'
我找到main "from“关键字和子字符串hql并添加count(*),然后进行此查询。
select count(*)
from Personel u
where u.lastname='azizkhani'
当我有包含组的查询时,我不能这样做
select u.l
在我的项目中,使用JPA1.0和Hibernate 3.2.x以及Tomcat进行部署。
在我的项目中,我使用了以下查询作为命名查询执行,
SELECT smSSTJob.smJob.jobId, smSSTJob.smJob.jobTypeId, smSSTJob.omObject.objectId,
smSSTJob.omObject.objectName FROM SMSSTJob smSSTJob
WHERE smSSTJob.smJob.jobTypeId IN (:jobTypeIdList)
AND smSSTJob.jobStatusId IN (:jobStatusLi
我是HQL的新手,请告诉我如何用HQL编写这个查询。
我的SQL方法是
public Integer validateEditDate(int id, String date);
我的SQL查询是
SELECT
count(a.activity_task_id)
FROM activity_task_details AS a
JOIN milestone_activity_details AS b
ON a.milestone_activity_id = b.milestone_activity_id
WHERE a.milestone_activity_id = 17
A
我的想法是,我想从HQL查询中了解实体和映射类。例如,如果我有。用于映射User.cs的实体UserMap.cs的User.cs
where I query with HQL like this>
var hql = session.CreateQuery("FROM User");
我如何知道这个查询是针对User.cs和UserMap.cs映射运行的。这是因为我想阻止用户查询一些实体。
非常感谢。
我有一个原生查询需要更改为HQL。
原始查询为:
SELECT COUNT(DISTINCT `table`.`id`) FROM `database`.`table` WHERE
(`table`.`date`" " BETWEEN '" + year + "-01-01 00:00:00' AND '" + year
+ "-12-31 23:59:59') AND `table`.`box` NOT LIKE '' GROUP BY MONTH(`table`.`date`)";
我试
我试图用HQL中的子查询(子查询返回3列的结果)的结果连接一个表,但是我得到了一个语法错误org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token。
看起来INNER JOIN在HQL中不像在SQL中那样工作,所以我查看了,但是它没有帮助。
HQL查询
SELECT R
FROM Table R
INNER JOIN (
SELECT T.id.col1, T.id.col2, MAX(T.col3) max_num
FROM Table T
GROUP BY T.id.col1
) b ON
在hql的子查询中有选择多列的方法吗?
我想将下面的mysql查询转换为hql
select u.name, sub.cnt from user u
inner join (select user_id, count(user_id) cnt from user_log group by user_id order by cnt desc limit 5) sub
on u.id = sub.user_id;
但是在hql中,我知道只能在where子句中使用子查询。
我是HQL的新手,我正在处理子查询。
我有以下SQL子查询:
select * from (
select * from table order by columnname
) as subquery
where columnvalue = 'somevalue';
我想在HQL中启动查询。我编写了以下代码:
Result = session.createQuery("from (from table order by columnname) as subquery where columnvalue = :somevalue")
.setPa
的问题为我触发了另一个问题,关于一些实现关注
现在您知道必须重用部分HQL查询才能进行计数,如何有效地重用?
两个HQL查询的不同之处是:
所选内容为count(?),而不是pojo或属性(或列表)
抓取不应该发生,所以某些表不应该连接。
order by应该消失
还有其他的区别吗?
您有编码最佳实践来实现这种高效的重用(关注点:工作、清晰、性能)吗?
简单的HQL查询示例:
select a from A a join fetch a.b b where a.id=66 order by a.name
select count(a.id