【发布时间】:2020-11-18 01:06:23
【问题描述】:
我已经定义了我的 DTO,但它也找不到它。 我已经在实体包中创建了 DTO,并且只是在需要的地方导入了包,它在编译时没有给出任何错误,在运行初始化 JPA EntityManagerFactory 后发生的代码时出现错误,为什么请帮帮我。
CartDTO 文件
package com.project.books.entity;
public class CartDTO {
private String name;
private String username;
private String status;
private int price;
public CartDTO() {
}
public CartDTO(String name, String username, String status, int price) {
this.name = name;
this.username = username;
this.status = status;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
cartRepository 文件
package com.project.books.dao;
import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import com.project.books.entity.Cart;
import com.project.books.entity.CartDTO;
public interface CartRepository extends JpaRepository<Cart,Integer> {
@Query("select c from Cart c where c.username = :username AND c.status = :status")
public List<Cart> findAllByUsernameAndStatus(@Param("username")String username,
@Param("status")String status);
@Query("select new CartDTO(c.name,c.username,c.status,sum(c.price)) from Cart c where c.username = :username AND c.status = :status GROUP BY username,status")
public CartDTO sumPriceByUsernameAndStatus(@Param("username")String username,
@Param("status")String status);
}
我的错误
Unable to locate class [CartDTO]
at org.hibernate.hql.internal.ast.tree.ConstructorNode.resolveConstructor(ConstructorNode.java:177) ~[hibernate-core-5.4.18.Final.jar:5.4.18.Final]
at org.hibernate.hql.internal.ast.tree.ConstructorNode.prepare(ConstructorNode.java:144) ~[hibernate-core-5.4.18.Final.jar:5.4.18.Final]
at org.hibernate.hql.internal.ast.HqlSqlWalker.processConstructor(HqlSqlWalker.java:1258) ~[hibernate-core-5.4.18.Final.jar:5.4.18.Final]
Error creating bean with name 'cartRepository': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract com.project.books.entity.CartDTO com.project.books.dao.CartRepository.sumPriceByUsernameAndStatus(java.lang.String,java.lang.String)!
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101) ~[spring-beans-5.2.8.RELEASE.jar:5.2.8.RELEASE]
Validation failed for query for method public abstract com.project.books.entity.CartDTO com.project.books.dao.CartRepository.sumPriceByUsernameAndStatus(java.lang.String,java.lang.String)!
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:93) ~[spring-data-jpa-2.3.2.RELEASE.jar:2.3.2.RELEASE]
Unable to locate class [CartDTO] [select new CartDTO(c.name,c.username,c.status,sum(c.price)) from com.project.books.entity.Cart c where c.username = :username AND c.status = :status GROUP BY username,status]
at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.4.18.Final.jar:5.4.18.Final]
at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) ~[hibernate-core-5.4.18.Final.j
请帮我解决它。 让我通过这个查询告诉你我的意思是什么我只需要所有价格的总和,其中用户名是登录的用户,状态是一些字符串。
【问题讨论】:
标签: java mysql spring-boot spring-data-jpa dto