参数值[1]与预期类型[java.lang.Boolean]不匹配
我在线程“main”org.springframework.dao.InvalidDataAccessApiUsageException中得到错误参数值[1]与预期类型[java.lang.Boolean]不匹配,java,spring,hql,Java,Spring,Hql,我在线程“main”org.springframework.dao.InvalidDataAccessApiUsageException中得到错误异常:参数值[1]与预期类型[java.lang.Boolean]不匹配;嵌套异常为java.lang.IllegalArgumentException:参数值[1]与预期类型[java.lang.Boolean]不匹配。 我对此感到困惑,因为它来自下面显示的被注释掉的服务方法。当我把它注释掉时,错误就避免了。active列是一个TINYINT(1),
异常:参数值[1]与预期类型[java.lang.Boolean]不匹配;嵌套异常为java.lang.IllegalArgumentException:参数值[1]与预期类型[java.lang.Boolean]不匹配。
我对此感到困惑,因为它来自下面显示的被注释掉的服务方法。当我把它注释掉时,错误就避免了。active
列是一个TINYINT(1)
,即1
或0
实体:
@Entity
@NamedQueries({
@NamedQuery(name="Workflow.findByUUID", query="SELECT w FROM Workflow w WHERE w.uuid = :uuid"),
@NamedQuery(name="Workflow.findByActive", query="SELECT w FROM Workflow w WHERE w.active = :active ORDER BY id ASC")
})
我的存储库:
@Repository
public interface WorkflowRepository extends JpaRepository<Workflow, Integer> {
List<Workflow> findByActive(@Param("active") Integer active);
}
@存储库
公共接口WorkflowRepository扩展了JpaRepository{
列表findByActive(@Param(“active”)整数active);
}
我的服务:
@Service
public class WorkflowService {
@Autowired
WorkflowRepository workflowRepository;
/**
* Get active workflows
*/
@Transactional(readOnly = true)
public List<Workflow> findActive() {
//return workflowRepository.findByActive(1);
return null;
}
@服务
公共类工作流服务{
@自动连线
WorkflowRepository WorkflowRepository;
/**
*获取活动工作流
*/
@事务(只读=真)
公共列表findActive(){
//返回workflowRepository.findByActive(1);
返回null;
}
当我取消注释时您似乎已将
工作流.active
属性映射为布尔值
。因此,您的存储库应该如下所示:
@Repository
public interface WorkflowRepository extends JpaRepository<Workflow, Boolean> {
List<Workflow> findByActive(@Param("active") Boolean active);
}
@存储库
公共接口WorkflowRepository扩展了JpaRepository{
列表findByActive(@Param(“active”)布尔值active);
}
调用workflowRepository.findByActive(true)
应该按照您希望的方式进行
事实上,HQL有时会在数据库和Java映射之间产生类型差异,因为在这些环境中,类型不同。因此,请检查您的
实体的活动类型,以使适当的存储库对于JPA实体而言,参数是布尔值。问题被标记为HQL
:-),java中没有Tinyint。@NamedQueries
是java持久性语言,我想.blint,@Param(“active”)
注释的目的是什么?@AlexanderSuraphel@Param
允许您在目标查询中配置参数的名称。我以为不需要它。我正在做类似的事情。