在使用Hibernate的JPA实现时,我注意到了一个有趣的优化行为。在同一事务中,初始JPA查询的WHERE子句用于涉及初始查询结果的后续查询。
例如,person拥有lastName和一组拥有的书籍。
// (1) get person by last name
Query q = entityManager.createQuery("SELECT p FROM Person p WHERE p.firstName = :lastName");
q.setParameter("lastName", "Smith");
List<Pers
(注:我编辑了我原来的文章以简化)
我无法获得JPQL查询中涉及SUBSTR函数的语法错误。我正在使用eclipselink 2.3.2。
具体来说,我想提出一个与这种sql查询类似的JPQL:
select * from Table1 t where SUBSTR(t.someStringField, 91, 5) like 'abc'
我编写了以下JPQL查询(它看起来非常类似于原始的sql对应程序):
select t from Table1 t where SUBSTR(t.someStringField, 91,5) like 'abc'
(注:为了
假设您有一个以下JPA查询:
select car.year, car.month, count(car) from Car car group by car.year, car.month
在查询结果之前,我们需要知道这个查询将返回多少条记录(对于分页、UI等)。换句话说,我们需要这样的东西:
select count(*) from
(select car.year, car.month, count(car)
from Car car group by car.year)
但是JPA/EclipseLink不支持"from“子句中的子查询。有没有办法绕过它?
是否可以对JPA查询中的子查询施加限制?
我在纯SQL中有以下查询
select * from ipinfo
where RangeEnd < (select RangeStart from ipinfo where RangeStart >= 1537022421 order by RangeStart asc limit 1) and (1537022421 <= RangeEnd)
ORDER BY RangeEnd desc
limit 1
将其直接转换为JPQL,我将有如下所示
select obj from IpInfo obj
where obj.rangeE
如何使用Spring Data JPA进行不同的计数?我不想使用@Query注释。等价的sql查询将是:
SELECT COUNT(DISTINCT rack) FROM store WHERE id = 10001;
我尝试编写以下查询,但它不起作用:
int countDistinctRackById();
我想在Access数据库的列结果中搜索像apple这样的查询字符串项。当我们在寻找单项时,Select * from table_name where FRUIT = "apple"工作得很好。
但是水果列包含多个术语,如香蕉、橙子、苹果等(如标签)。因此,上面的SQL查询在搜索时不起作用。
另外,如何在用户想要搜索未定义的术语数时进行SQL查询,例如。他可以尝试苹果或苹果、橙子或葡萄橙色苹果等,即他可以尝试一起搜索一个或多个术语。
注意:我也在阅读来解决上面的问题。但是,我仍然没有弄清楚,如何使用它来获取符合搜索条件的记录集。
我有一个SQL原生查询。我想把它转换成Specification对象,这样我就可以用它传递额外的条件和可分页的对象。
select * from tableA where (colA, colB) in
(select colA, min(colB) from tableA
group by colA
)
我想实现一个子查询,min函数。
另外,有人能建议我在哪里可以找到这些spring数据JPA规范的适当文档吗?
假设我有以下数据库表结构:
A >- B -< C >- D
其中>-是一对一的关系,-<是一对多的关系.
现在,我想删除所有A条目,这些条目对应于具有给定名称的D。
有人可能会说
DELETE FROM A JOIN B ON <condition> JOIN C ON <condition> JOIN D ON <condition> WHERE D.name=?
是个解决办法。遗憾的是,在JOIN查询中似乎不能有一个DELETE子句。
另一种方法是进行子查询,如下所示:
DELETE FROM A AS elem WHER
如何在spring boot中使用distinct和not null编写jpa查询?下面是示例。
职员实体类sql查询为:
select distinct job from emp where job is not null
如何在jpa中编写上述查询。
我已经在这里尝试了findByJobNotNull(),null工作得很好,但需要distinct如何做到这一点,请建议。
我想知道是否有一种方法可以编写类似下面的JPQL语句
select o from entity1 o where (o.field1, o.field2) IN (select value1, value2 from ...)
类似的sql查询适用于Oracle 10g。然而,在eclipselink中,我得到了这个错误:
syntax error at [,].
Internal Exception: MismatchedTokenException(81!=84)
at org.eclipse.persistence.exceptions.JPQLException.syntaxError
我正在尝试为两个日期date1和date2之间的过滤数据创建JPA规范,我试图通过子查询创建,但到目前为止还没有成功,如果可能的话,请帮助。我正在尝试为下面的SQL查询创建规范,
select
* from
subscription sub join (
select subscription_id,
max(output_date) as max_output_date
from
subscription_package
where
package_status = 'COMPLETE
我正在使用JPA distinct投影来获取一些数据:
select distinct o.f1, o.f2, o.f3 from SomeEntity o where ...
这可以很好地与setFirstResult和setMaxResults一起使用来分页数据。
但是,我需要计算总行数,而不是提取所有行。我试过了:
select count(distinct o.f1, o.f2, o.f3) from SomeEntity o where ...
这不适用于EclipseLink (无论如何),而且JPA规范似乎也不允许这样做。还有别的办法吗?我不希望必须编写SQL查询才能做到这一点。
我正在使用eclipse 2,并且有三个实体:父实体、子实体和ChildInfo。父母对孩子只有一个。孩子有1比1到ChildInfo。
i想要在一个调用中得到一个具有所有子对象的父对象:"select P from Parent left join P.children P.id=:id P.id=:id“,这只会在P至少有一个子(我以为是一个左外部连接)时才会给出结果,因为jpa不支持导航p.children.childinfo,所以我也想拥有所有的孩子&所有的孩子&所有的孩子和所有的孩子,因为jpa不支持导航p.children.childinfo,有什么方法可以
我在jpql中有这样的查询
select new com.example.CustomGroup(m.id, m.title, (select count(w.id) from MessageGroup x join x.messages w where w.readers.id <> ?1) )
from MessageGroup m join m.members u where u.id = ?1
但是不起作用,我知道jpa 2支持select中的子查询,但找不到任何关于如何使用它的参考。
在将项目从Ibatis转换为JPA2.1时,我面临一个问题,即必须为一组对象加载一个完整的对象图,而不必出于性能原因而选择N+1或使用笛卡尔产品。
用户查询将产生一个列表,我需要确保当我返回任务时,他们填充了所有属性,包括父级、子级、依赖项和属性。首先,让我解释所涉及的两个实体对象。
任务是层次结构的一部分。它可以有父任务,也可以有子任务。任务可以依赖于其他任务,由“依赖关系”属性表示。任务可以具有许多属性,由属性属性表示。
示例对象已尽可能简化,并删除了样板代码。
@Entity
public class Task {
@Id
private Long id;
@M
很抱歉,这个问题已经关闭了,不能重新打开,而且我的英语很差,确实被网站翻译了。:)
@BartKier感谢您对这个问题感兴趣,让我给它一个详细的例子。
有很多SQL查询,比如select * from user或update user set field1 = 'value1' where condition = 'value'等,我们称它为原始SQL查询。
有一个java程序将所有原始的SQL查询通过ANTLR4截获并解析成解析树节点,然后由java程序重写查询(依赖于解析阶段),因此原始的SQL查询可以被解析并重写为
select field1, fiel
我们尝试为原生sql查询动态生成IN子句,以返回JPA实体。Hibernate是我们的JPA提供者。我们的代码看起来像这样。
@NamedQuery(
name="fooQuery",
queryString="select f from Foo f where f.status in (?1)"
)
....
Query q = entityManager.createNamedQuery("fooQuery");
q.setParameter(1, "('NEW','OLD')
我正在使用JPQL实现PostgreSQL查询。
这是一个运行良好的本地psql查询示例,
SELECT * FROM students ORDER BY id DESC LIMIT 1;
JPQL中的相同查询不起作用,
@Query("SELECT s FROM Students s ORDER BY s.id DESC LIMIT 1")
Students getLastStudentDetails();
似乎限制条款在JPQL中不起作用。
根据JPA文档,我们可以使用setMaxResults/setFirstResult,有人能告诉我如何在上面的查询中使用吗?
我是JPA存储库实现的新手,所以寻求帮助。用于获取列值中包含条件的表项的普通sql查询为:
select * from table t where t.column in('firstvalue','secondvalue','thirdvalue')
有没有与此对应的JPA/CRUD存储库?
对于多对一的关系。
子查询将是:
select * from child_foo where foo_id in(select foo_id from foo where foo_other_value="somevalue")
为此,h