我试图在Hibernate (通过JPA)中运行这个查询,但它会引发
由: org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:(靠近第1行,第32列)引起的: java.lang.IllegalArgumentException:
有什么办法让这件事变得更好吗?我不想使用OR子句,因为在使用OR子句时查询要慢得多。
SELECT SUM(s) as sum FROM (
SELECT count (ID) AS s
FROM TABLE1 rr
WHERE rr.status = 0
AND (rr.risk =
我有以下请求,它们在oracle中运行良好:
SELECT SUM(col1_sum + col2_sum + col3_sum) AS sum_total FROM (
SELECT
COUNT(CASE WHEN (col1 != 0) THEN 1 END) AS col1_sum,
COUNT(CASE WHEN (col2 IS NULL) THEN 1 END) AS col2_sum,
COUNT(CASE WHEN (col3 IS NULL OR col 3 < 0) THEN 1 END) AS col3_sum
首先也是最重要的一点,如果这个问题已经被问到了,我很抱歉,但是我在寻找它的时候找不到任何东西。
我是一个使用Hibernate的新手,我不确定是否可以这样做,但我正在尝试将以下查询从SQL转换为Hibernate:
Select count(*) from (
Select count(*)
from table
where field1 in (...)
Group by field1, field2);
现在,我知道我可以获得第二个查询的列表并检查它的大小,但是我想使用uniqueResult()方法来完成这个任务,因为它更高效。
对怎么做有什么想法吗?提前感谢!
编辑1
我必须将下一个表达式转换为hibernate条件api:
select * from games gs
INNER JOIN (select gg.ID, gg.CODE, max(gg.DATE) max_date from games gg
where gg.player_id = 1 group by gg.ID, gg.CODE) ss
on gs.CODE = ss.CODE
and gs.ID = ss.ID
and gs.DATE = ss.max_date
and gs.player_id = 1
我该怎么做呢?我能够分别创建内部和外部标准,但不知道如何加入它们:
据我所知,至少在Server中,我们不能使用用于连接该表的一组表中的别名。
在一个例子中:
CREATE TABLE A (A1 int, A2 int)
CREATE TABLE B (B1 int, B2 int)
SELECT a.A2
FROM
A as a
INNER JOIN
(SELECT * FROM B as b WHERE b.B1=a.A1) b2 ON b2.B2=a.A2
该查询将导致一个错误,因为别名a被使用在将被连接到别名引用(A)的表的集合中。
在Server中,可以使用交叉应用解决这一问题,也可以通过重写查询来解决。(这是而不是我的问题)。
我的问题是
我使用以下命名查询:
@NamedQuery(name="FseLiveLocation.findByMultipleIds", query = "SELECT f FROM FseLiveLocation f inner join (SELECT max(fl.id) ide FROM FseLiveLocation fl WHERE fl.fseInfoId IN (:fseInfoList) GROUP BY fl.fseInfoId) j on f.id=j.ide")
此查询在mysql中运行良好:
select f.* from fse_live_l
我必须在hibernate的criteria query中创建这种类型的查询
SELECT *
FROM
${hibernate.default_schema}.VW_GEMS_CUST_TRNG_RPT CUSTOMER,
(SELECT * FROM ${hibernate.default_schema}.VW_GEMS_VENUE WHERE ORG_NAME =?)
VENUE
WHERE
CUSTOMER.PRIMARY_VENUE_ROW_ID = VENUE.VENUE_ROW_ID(
我定义了以下方法:
@Query("SELECT AVG(total) FROM (SELECT COUNT(t.name) total FROM DataTable t GROUP BY DATE(actiontime)) result")
Long countAvg();
但是,它会导致此错误:
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 24 [SELECT AVG(total) FROM (SELEC
我正在使用hibernate,在哪里获取数据我正在使用条件。但我认为使用标准有一些限制。但是我想问下面一些我认为可以通过使用hibernate中的条件来实现的事情。
如何在基于标准hibernate中编写以下查询
select * from (select d.priceId , sum(d.price) as sumP, avg(d.price) as avgP from data d group by d.priceId) as adata where sumP like '%%';
现在,我可以为下面的SQL编写基于标准的hibernate查询:
select d.pr
我正在用IN子句编写一个更新查询,在其中我要传递列表。
update table set postcode={#postcode} where id in
<foreach collection="addresses" index="index" item="item" open="("
separator="," close=")">#{item}</foreach>
当addresses.If中的记录少于1000条时,这会很好地运行--在错误下面有超过1000条记录:
我需要为ids列表创建一个字段的更新。此列表的大小是可变的。
我想知道的是,接下来的两个可能的选择是更好的:
备选方案1:批量更新:
PreparedStatement update = connection.prepareStatement(" UPDATE table set field = value where id = ?");
for (id : ids){
update.setInt(id);
update.addBatch();
}
update.executeBatch();
备选案文2: IN (x,x,x)
PreparedStatemen
我使用Hibernate与Derby进行JPA映射。对于一个复杂的对象结构,我得到了"org.apache.derby.client.am.SqlException: SELECT语句有太多的项在组BY,ORDER或select list":
org.apache.derby.client.am.SqlException: SELECT statement has too many items in GROUP BY, ORDER BY or select list.
org.apache.derby.client.am.Statement.completeSq
我正尝试在hibernate HQL中使用set子句中的subselect进行更新,如下所示:
update UserObject set code = (select n.code from SomeUserObject n where n.id = 1000)
它不工作,它不被支持?
谢谢
Udo
我在MySQL 5.5 (或以前的版本)中使用以下查询多年,没有任何问题:
SELECT t2.Code from (select Country.Code from Country order by Country.Code desc ) AS t2;
结果的顺序总是在我需要的时候递减。
上周,我刚刚迁移到一个新的MySQL版本(实际上,我迁移到了MariaDB 10.0.14),现在使用相同数据库的相同查询不再降序排序。它是按升序排序的(或者按自然顺序排序,实际上并不确定)。
那么,谁能告诉我这是一个bug,还是最近版本的MySQL/MariaDB的行为发生了变化?
我正在使用MySql处理hibernate,并尝试更新记录,这会给我带来错误。
码
Query query = session.createQuery("update UserDetails set userStatus=:userStatus where id =(select max(id) from UserDetails where department=:department)");
query.setParameter("userStatus", "ACTIVE");
query.setParameter(&
这是我的场景,我有3个实体/表,比如说,MainEntity,EntityA和EntityB。它们的属性和关系如下所示。
MainEntity entityID,entityName,entityType
EntityA entityID,entityName,typeId
EntityB typeId,entityType,
在SQL中,输出可以如下所示。
选择MainEntity * FROM MainEntity作为mainEnity内部连接(选择A.entityID,A.entityName B.entityType from EntityA as A LEFT JOIN Entity
SELECT *
FROM Kidney a
-- JOIN and create the derived table
JOIN (SELECT Age, MAX(BloodPressure) AS MaxBloodPressure FROM Kidney GROUP BY Age) b
-- JOIN on BloodPressure equal to MaxBloodPressure
ON a.BloodPressure = b.MaxBloodPressure
-- Join on Age
AND a.Age = b.Age
我正在尝试确保hibernate 3.2.1中的EJBQL功能支持以下内容,但我的google-fu失败了。我所发现的是EJB2.x不支持嵌套查询
我可以将查询放在查询中,如下所示:
select count(*) from
(select myField from myTable group by myField having sum(case.....) ....... )
我有一个虚拟自助餐厅项目,其中我有三个域类:User、Product和Transaction。
下面是如何定义类:
class User {
String name
int employeeId
long balance = 800
static constraints = {
balance(max: 800L)
}
}
class Product {
String type
int quantityInStock
float price
static constraints = {
我有两张桌子:
orders: id
items: id, orderId, total, flag
我想使用Hibernate Criteria (DetachedCriteria)进行以下查询:
SELECT
o.id,
SUM(i1.total),
SUM(i2.total)
FROM
orders o
LEFT JOIN
(
SELECT
i.orderId as orde
下面是我的代码,它使用hibernate,期望如下所示
SUM( CASE WHEN model.voter.age
between '"+18+"' and '"+25+"'
THEN 1 ELSE 0 END) as 18ageCount
org.springframework.orm.hibernate3.HibernateQueryException:
expecting IDENT, found '18' near line 1, col
是否可以在case子句中为when语句写入子查询
即。
SELECT colA, colB,
CASE WHEN (SELECT colA FROM tab2 WHERE tab2.colA = tab1.colA) THEN '1'
CASE WHEN (SELECT colA FROM tab3 WHERE tab3.colA = tab3.colA) THEN '2'
ELSE '0'
END AS colC,
...
FROM tab1
扩展问题:
是否可以基于该值列执行某些操作?(非常确定是的,但希望得到确认)
我正在尝试运行这个查询,以便按月和帐户获取销售:
select
left(cast(datekey as varchar(8)), 6) as themonth,
account, sum(sales)
from
Sales
where
datekey > 20150101
group by
themonth, account
order by
themonth asc
datekey是遵循YYYYMMDD格式的日期格式的int。
我收到这样的信息:
Msg 207,16级,状态1,第3行
无效列名'themonth