我想了解hibernate是如何在内部或其他模型中执行hql查询的,hql查询引擎是如何工作的。请建议一些相同的好的链接?
阅读的原因之一是下面的问题。
Class Branch
{
//lazy loaded
@joincolumn(name="company_id")
Company company;
}
因为company是重对象,所以它是惰性加载的。
现在我有了hql查询
"from Branch as branch where branch.Company.i
我打算为我的视图/业务层提供向数据层发送字符串查询的可能性。
但是,数据层需要分析和操作这些查询(特别是在where子句中添加一个标准)。
所支持的HQL查询形式是以下任意组合:
from ...
where ...
order by ...
我认为这种简化的HQL查询应该是可Regex的,这就是我定义的Regex:
public const string HqlRegex = @"^(\bfrom\b\s*(?<FromPart>.+)\s*)?"
+ @"(\bwhere\b\s*(?<WherePart>.+)\s*)?"
SQL :
String hql1 = "SELECT /* PARALLEL(MVR,16) PARALLEL(MVRS,16)*/ * FROM
ICM MINUS SELECT I1.* FROM ICM I1 , C1_ICM_STATIC I2 WHERE
I1.METRIC_DIRECTION=I2.METRIC_DIRECTION AND
I1.METRIC_NAME=I2.METRIC_NAME AND I1.METRIC_UNIT=I2.METRIC_UNIT AND
I1.TERMINATION_POINT_ID=I2.TERMINATION_POINT_ID A
是否可以使用QueryOver或CreateCriteria:
SELECT FooName, SUM(FooAmount)
FROM (
SELECT
(SELECT Name FROM Foo
WHERE Foo.BarId = Bar.Id) as FooName,
FooAmount
FROM Bar
) as inner_query
GROUP BY FooName
请注意,此查询是出于演示目的而构建的。我对添加实体之间的关系,重写查询本身等不感兴趣。此外,应用程序被设置为利用使用CreateCriteria的
当我在Eclipse编辑器中运行以下查询时,它无法工作:
update TblAdmin A set A.password='1a23'
我得到了错误消息:
org.hibernate.hql.QueryExecutionRequestException:Not supported for DML
operations[update TblAdmin A set A.password='1a23']
其他查询(如select语句)运行良好。
有任何选项可以从编辑器执行语句吗?
我是jpql的新手,我正在尝试执行这个查询:
String queryString="" +
"SELECT u,sr " +
"FROM spot_review sr, user u, spot s " +
"WHERE " +
"sr.user_iduser IN (SELECT ALL fu.user_iduserto FROM favorite_user fu WHERE fu.user_iduserfr
我需要使用hql合并2个表,它们都有公共列,但table1公共列是integer,table2公共列是String
例如,
select a.id as id,a.name as name,b.address as address
from Personal as a,Home as b
where a.id=b.studid
这里的a.id是一个integer,而b.stduid是一个string,但是这两列的数据是相同的。
如何使用hql query获取查询结果?
我想创建一个HQL查询,它可以访问一组特定对象的属性,让我通过一个简短的示例来解释
类组织
public class Organization ...{
private int orgid;
private Set<DomainValue> languages = new HashSet<language>(0);
private Set<Address> adresses = new HashSet<Address>(0);
...
}
类地址
public class Address implements j
我需要获得正确的HQL查询,而不是下面的SQL查询。
select * from question where qid >=all (select qid from Question where uid = 1);
我想我们不能在HQL中使用>=all()。如果我错了,请纠正我。并为上述SQL查询给出正确的HQL查询。
正在等待回复...帮助。
我想在NHibernate中创建一个有限制的更新方法(where子句),但是我不想做HQL模式。
例如,我的SQL查询:
"update NFE set SEFAZ_STATUS_DATA=@SEFAZ_STATUS_DATA,MENSAGEM_ERRO=@MENSAGEM_ERRO"
我怎么能不使用HQL呢?
这行得通?
public virtual T Alterar(List<ICriterion> lstCriterios, T entity)
{
try
{
using (ISession session = Session
我正在使用PostgreSQL和JPA/Hibernate。我需要构建一个包含PostgreSQL regex比较运算符(name ~ 'pattern')的HQL查询。我有以下方言:
public class PostgreSQLExtendedDialect extends PostgreSQL95Dialect {
public PostgreSQLExtendedDialect() {
registerFunction("regexp_matches", new SQLFunctionTemplate(BooleanType.I
问题:在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
我在编写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=
我有一个包含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查询的一部分-真正的查询是更复杂的,它