如何在"JPA“中编写在GROUP BY之前进行排序的查询?
例如:
select m from Message m where m.id = (
select distinct m2.conversation_id
from Message m2
where m2.from = 100 or m2.to = 100
)
group by m.conversation_id order by m.date desc
我想要每个会话id的最后(最新)消息。
在我的项目中,我必须(为每个客户)实现多租户功能。其思想是在每个实体中存储一个属性(customer_id)以供分离。
为了获得一个客户的数据,我需要用这个属性扩展SQL。
示例:
billRepository.findByDateAndCustomerId(date, customerId);
结果是
select * from bill where date = ? and customer_id = ?
但是我想要有一个像这样的方法
billRepository.findByDate(date);
结果应该和上面的一样。
select * from bill where date = ?
我正在尝试使用以下代码
Query query;
query = entityManager.createQuery("SELECT g.name FROM group g INNER JOIN user_group ug INNER JOIN user u ON u.id = ug.userid AND ug.groupoid = g.id AND u.name = ?1 AND u.password = ?2");
query.setParameter(1, user.getName());
query.setParameter(2, user.getPassword())
我在jpa中有这样的查询(不起作用):
entityManager.createQuery("select new pl.proama.wd.model.PolicyDTO2(pol.policyID) from Policy pol LEFT JOIN pol.claim c WHERE c.claimID=:id").setParameter("id", "20700003915").getResultList();
和这样的数据库表:
策略表->(Policy_id(Pk),其他列)
索赔表-> (Claim_id(pk),P
我必须连接两个表,并使用带有规范和JPA的Where过滤结果。但是我不是很熟悉它。
例如,这些表包括:
public class A {
private Long id;
private Long secondId;
...
}
public class daughterA {
@JoinColumn (name = "id")
private Long idA;
...
}
而WHERE将应用于secondId。
感谢所有人的帮助,我为任何错误道歉,我从这些技术开始。
我正在使用这个JPA-查询:
SELECT DISTINCT e.label FROM Entity e
GROUP BY e.label
ORDER BY COUNT(e.label) DESC
我没有错误,结果排序几乎是正确的,但是有一些值是错误的(要么两个值被翻转,要么一些单个值被完全错置)。
编辑:
将计数(e.label)添加到SELECT子句可以解决此查询的此问题。
但是,在同样包含WHERE子句的类似查询中,问题仍然存在:
SELECT DISTINCT e.label, COUNT(e.label) FROM Entity e
WHERE TYPE(e.cat) = :c
我对JPA有个小问题。考虑一下这种情况:
表A (id_a) 表B (id_b,id_a)
我需要的是这样一个查询:
Select a.*, c.quantity from A as a, (Select Count(*) as quantity
from B as b where b.id_a = a.id_a) as c;
问题是,我想使用jpa查询,而不是本地查询,如下所示:
Select a, c FROM A a, (Select Count(b) FROM B b where a.idA = b.a.idA) c;
因此,我可以从结果(每个节点中有a和c的Object[]列表)迭
Yestody,我有个问题,jpa如何使用动态tableName运行DDL?通常,我只使用DQL和DML,比如'select,insert,update,delete‘。例如:
public interface UserRepository extends JpaRepository<User, Integer> {
@Query(value = "select a.* from user a where a.username = ? and a.password = ?", nativeQuery = true)
List<User
我想知道如何在Hibernate查询语言中使用日期文字。我在我的JPA项目中(作为提供者Eclipselink )执行了以下操作,并且它可以工作。
SELECT m FROM Me m WHERE m.dob <= {d '1984-10-06'}
但是当我将Hibernate (V3.6.7)更改为我的JPA项目的提供者时,这不起作用。
尝试使用where子句而不是左联接获得相同的结果
TableA模式:
id
name
created_by
TableB模式:
id
name
updated_by
样本TableA
id name created_by
1 pen a
2 paste k
样本TableB
id name updated_by
1 inkpen b
1 ballpen c
使用左连接查询
select tablea.id, tableb.id, tablea.name, tableb.name
from tablea
left
我在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中的子查询,但找不到任何关于如何使用它的参考。
I试图获取不同的记录,SQL查询如下所示
select DISTINCT id from Table A where UserId = 'XXXX';
目前,我已经使用spring @Query实现了这一功能。
@Query(value = "select DISTINCT id from Table A where UserId = :userId")
这可以通过spring数据jpa查询方法来实现吗?
我是JPA的新手。所以我的问题对某些人来说应该很简单。
下面是SQL中的简单查询,我想将其转换为JPA。我已经有一个名为TimeEnt的实体类。
SELECT
SUM(TimeEntryActualHours) as UnBilledHrs,
SUM (TimeEntryAmount) as UnbilledAmount
FROM TimeEnt WHERE MatterID = 200
我正在使用JPA、Eclipse链接、Oracle。我试图在我的JPA查询中引入一个条件,相当于下面的oracle表达式
current_timestamp - NUMTODSINTERVAL(10, 'SECOND')
我尝试了几个类似于以下的查询
select u from User u where (current_timestamp - FUNC('NUMTODSINTERVAL', :offset, 'SECOND')) > u.birth_date
但没有结果。所有这些都会导致语法错误。我希望避免本机查询以及使用java计算值
我在存储库中为JPA中的%LIKE%SQL equal使用了包含方法,如下所示: Page<Obj> findByNameContaining(String name, Pageable pageable); 它将像下面这样工作, select * from Obj where name like '%John%'; 但是我如何使用JPA传递如下查询的List<String>名称, select * from Obj where name like '%John%' or name like '%Jiva%' or na
JPA的抓取策略控制到底是什么?我看不出渴望和懒惰之间有什么区别。在这两种情况下,JPA/Hibernate不会自动连接多对一关系。
人只有一个地址。一个地址可以属于许多人。JPA注释的实体类如下所示:
@Entity
public class Person {
@Id
public Integer id;
public String name;
@ManyToOne(fetch=FetchType.LAZY or EAGER)
public Address address;
}
@Entity
public class Address {
由于不能在WHERE子句中使用表达式结果,所以需要重复该表达式。但由于我在上面也使用它,作为一个专栏-这似乎是一种资源的浪费。
能避免吗?
一些代码:
SELECT field1,
(SELECT some_field
FROM another_table) AS field2
FROM table_1
WHERE NOT field2 IS NULL
# won't work
SELECT field1,
(SELECT some_field
FROM another_table) AS field2
F
为了在合理的时间内收集大量的重对象,避免内存溢出,我们实现了一个解决方案(我指的是具有多个fetchType.eager关系的对象,以及它们本身具有渴望获取关系的实体),首先选择这些对象的in,然后根据这些in选择对象本身。
到了优化代码的时候,我们注意到(使用hibernate.show_sql=true),我们用来收集这些对象(select a from A a where a.id in :ids)的查询被JPA/Hibernate转换为表单select a from ...endless join list... where a.id = ?的数千个查询。
问题如下:
为什么JPA/H
如何用JPA编写这种复杂的连接查询,我在下面提到的一些语法不适用于JPA。我已经使用它们来演示sql查询应该构建的方式,所以很抱歉。
SELECT Result1.name1, Result1.count1, Result2.name2, Result2.count2 FROM (
SELECT
taskOne.user.name AS name1,
COUNT(taskOne.taskId) AS count1
FROM
Task AS taskOne
INNER JOIN
taskOne.defect
当两个JPA实体之间没有FK/PK关系时,我需要在一个属性上连接两个JPA实体。我正在使用Hibernate,可以像这样使用HQL查询
select foo, bar from FooEntity as foo, BarEntity as bar
where foo.someothercol = 'foo' and foo.somecol = bar.somecol
但是,我想避免对Hibernate的依赖,而使用EntityManager。请帮帮忙。
我有一个复杂的查询,我想使用JPA Criteria Builder为其构建查询
select i.*
from items i
where category = ?
order by
(price >= ?) desc,
(case when price >= ? then price end) asc,
price desc limit 1;
我对Criteria Builder不是很熟悉,但有基本的知识。
提前谢谢。
我是JPA的新手,这是我的一个查询,我有几个参数作为查询的一部分,任何参数都可以是空值
@Query(value = "SELECT ord.purchaseOrderNumber,ord.salesOrderNumber,ord.quoteNumber"
+ " FROM Order ord WHERE ord.purchaseOrderNumber LIKE :poNumber% "
+ " AND ord.salesOrderNumber LIKE :soNumber "
我在MySQL 5.0.67中使用Hibernate的JPA实现。MySQL配置为使用InnoDB。
在执行JPA查询(转换为SQL)时,我发现使用IN子句比执行单个查询要慢。示例:
SELECT p FROM Person p WHERE p.name IN ('Joe', 'Jane', 'Bob', 'Alice')
比四个单独的查询慢:
SELECT p FROM Person p WHERE p.name = 'Joe'
SELECT p FROM Person p WHERE p.name = '
在这里,我想从特定用户的Order表中检索所有订单,这些订单是由orderDate在DESC中订购的,还有那些以OrderStatus为真的订单,以使其成为列表的首位.
但是我在执行代码时遇到了一个错误,Hibernate错误:方法公共抽象java.util.List的查询失败。
用户
@Entity
@Getter
@Setter
@Table(name = "Users")
public class User {
@Id
@Column(name = "user_id")
@GeneratedValue(strategy = Gen
我已经将一些Entity从JPA移植到文档中,现在移植了一些查询。以下是JPA查询:
em.createQuery("select distinct c from CustomerImpl c left join fetch c.addresses ca where (:name is null or c.firstName LIKE :name or c.lastName LIKE :name) and (:ref is null or c.externalReference LIKE :ref) and (:city is null or ca.city LIKE :city) o
我有一个in列表,我需要一个查询来返回指定表中不存在的in。我知道,在SQL中,您可以这样做:
select *
from (
values (4),(5),(6)
) as v(id)
where not exists (select *
from images i
where i.id = v.id);
(从这个答案:)
但我正在尝试使用JPA @Query,并将列表作为参数传递,而它似乎并不喜欢这个参数。
SELECT t.id
FROM :ids AS t(id)
WHERE NOT EXISTS
([Nested select clause])
使用
Li