![](/img/trans.png)
[英]org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [false] did not match expected type [java.lang.Boolean (n/a)];
[英]Parameter value [1] did not match expected type [java.lang.Boolean]
我Exception in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [1] did not match expected type [java.lang.Boolean]; nested exception is java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.lang.Boolean]
收到错误Exception in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [1] did not match expected type [java.lang.Boolean]; nested exception is java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [java.lang.Boolean]
Exception in thread "main" org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [1] did not match expected type [java.lang.Boolean]; nested exception is java.lang.IllegalArgumentException: Parameter value [1] did not match expected type [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);
}
我的服务:
@Service
public class WorkflowService {
@Autowired
WorkflowRepository workflowRepository;
/**
* Get active workflows
*/
@Transactional(readOnly = true)
public List<Workflow> findActive() {
//return workflowRepository.findByActive(1);
return null;
}
当我取消注释时
您似乎已将Workflow.active
属性映射为Boolean
。 所以你的存储库应该是这样的:
@Repository
public interface WorkflowRepository extends JpaRepository<Workflow, Boolean> {
List<Workflow> findByActive(@Param("active") Boolean active);
}
并且调用workflowRepository.findByActive(true)
应该按照您希望的方式运行。
事实是 HQL 有时会在数据库和 Java 映射之间产生类型差异,因为在这些环境中类型不同。 因此,请检查您的Entity
的active
类型以制作适当的Repository
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.