Java JPQL查询中DTO构造函数存在问题
我在JPQL查询中将参数do DTO传递给构造函数时遇到问题。我有一个错误: 原因:org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类[eConcept.model.dto.PokojDTO]上找到适当的构造函数。预期参数为:int,int,java.lang.String,java.lang.String,int,java.lang.String,int,int,int,java.util.Date,int 我在dao中的JPQL:Java JPQL查询中DTO构造函数存在问题,java,hibernate,spring-boot,entity,dto,Java,Hibernate,Spring Boot,Entity,Dto,我在JPQL查询中将参数do DTO传递给构造函数时遇到问题。我有一个错误: 原因:org.hibernate.hql.internal.ast.QuerySyntaxException:无法在类[eConcept.model.dto.PokojDTO]上找到适当的构造函数。预期参数为:int,int,java.lang.String,java.lang.String,int,java.lang.String,int,int,int,java.util.Date,int 我在dao中的JPQL:
@Query("select new ekoncept.model.dto.PokojDTO( \n" +
" p.pokojId, p.pokojNr, p.pokojNazwa, p.pokojOpis, \n" +
" p.pokojtypId, pt.pokojtypNazwa, \n" +
" p.pokojSprzatany, p.pokojRemontowany, \n" +
" m.meldunekId, m.meldunekDataDo, r.rezerwacjaId, \n" +
" :today) \n" +
"from Pokoj p \n" +
"left join Pokojtyp pt on pt.pokojtypId=p.pokojtypId \n" +
"left join Meldunek m on m.pokojId = p.pokojId and m.meldunekAktywny = 1 and :today between m.meldunekDataOd and m.meldunekDataDo \n"+
"left join Rezerwacja r on r.pokojId = p.pokojId and r.rezerwacjaAktywna = 1 and :today = r.rezerwacjaDataOd \n"+
"where (:status is null) or (p.pokojSprzatany = :status) \n" +
"order by p.pokojNazwa"
)
List<PokojDTO> getPokojList(
@Param("status") Integer pokojSprzatany,
@Param("today") Date today);
dao呼叫:
public List<PokojDTO> getPokojList(Integer pokojSprzatany) {
Date today = sysoperMgr.getToday();
return pokojDao.getPokojList(pokojSprzatany, today);
}
public List getPokojList(整数pokojSprzatany){
Date today=sysoperMgr.getToday();
返回pokojDao.getPokojList(今天是pokojSprzatany);
}
我知道这个问题是因为构造函数中有“:today”,因为它没有转发给构造函数(为什么?)。JPQL中是否不支持将参数传递给DTO构造函数?是否需要解决此问题或其他语法
public List<PokojDTO> getPokojList(Integer pokojSprzatany) {
Date today = sysoperMgr.getToday();
return pokojDao.getPokojList(pokojSprzatany, today);
}