java - Spring 数据 JPA 查询行为异常

标签 java spring-data-jpa

我有这些实体:

public class Order_status_sas {
   private Order_sas order;
   private Date lastModified;
   ...
}

public class Order_sas {
   private long id;
   ...
}

我的 CrudRepository:

public interface StatusesWareHouseRepository extends CrudRepository<Order_status_sas, Long> {
   Order_status_sas findFirstByOrderIdOrderByLastModifiedDesc(long id);
}

我期待那个方法 findFirstByOrderIdOrderByLastModifiedDesc将从表 Order_status_sas 返回第一行, 其中order.id = <some_id>按字段排序 lastModified ,但在日志中我看到了这个查询:

Hibernate: select ... 
       from order_status_sas a 
          left outer join orders_sas b 
            on a.order_id=b.id 
       where b.id=? 
       order by a.last_modified desc

这个查询不返回一行,而是返回一个行列表。好像Spring Data不用看word First在我的方法名称中。另外,我得到一个异常(exception):

org.springframework.dao.IncorrectResultSizeDataAccessException: 
result returns more than one elements; nested exception is javax.persistence.NonUniqueResultException: result returns more than one elements

请告诉我我做错了什么,我怎样才能达到我的目的?

已编辑: 我编辑了我的 StatusesWareHouseRepository使用自定义查询:

@Query("select s from Order_status_sas s where s.order.id = ?1 order by s.lastModified desc limit 1")
Order_status_sas findFirstByOrderIdOrderByLastModifiedDesc(long id);

但是由 Hibernate 执行的查询没有改变。它看起来像这样:

select ... 
from order_status_sas s 
where s.order_id=? 
order by s.last_modified desc

最佳答案

好的,我理解@PriduNeemre 的观点。让我们离开 DB 模型,回到 JPA 问题。这是另一个例子:

@Entity
public class Client {
   ....
}

public interface ClientRepository extends CrudRepository<Client, Integer> {

Client findFirstByOrderByNameDesc();
}

Hibernate 查询仍然是这样的:

select ... 
from clients c 
order by c.name desc

关于java - Spring 数据 JPA 查询行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27854897/

相关文章:

java - 如何将 org.apache.xmlbeans.XmlObject 转换为我的 customJavaObject

java - 使用 JAXB 在 Java 中编码

java - 用SwingX的ImageView进行CollorAdjust?

java - 正则表达式匹配除日期时间格式中包含的数字之外的所有数字

java - Spring Data JPA - 删除多对多条目

java - 如何在指定时区的 hibernate 中获取记录?

java - Spring Data Rest - 存储库继承创建奇怪的搜索端点

java - 如何从 Maven 访问 com.sun.pdfview?

java - 当属性来自另一个表时,如何避免在 Spring Data JPA 上指定 SQL 查询

java - Spring JPA "And"方法且不为空