9

エラーが発生しています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)いずれ10です。

実在物:

@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;
    }

コメントを外すと

4

1 に答える 1

19

Workflow.active属性を としてマッピングしたようですBoolean。したがって、リポジトリは次のようになります。

@Repository
public interface WorkflowRepository extends JpaRepository<Workflow, Boolean> {
    List<Workflow> findByActive(@Param("active") Boolean active);
}

そして、呼び出しworkflowRepository.findByActive(true)はあなたが望むように振る舞うべきです。

実際のところ、HQL はデータベースと Java のマッピングで型の違いを生むことがあります。これらの環境では型付けが同じではないからです。したがって、あなたEntityactiveタイプを確認して、適切なものを作成してくださいRepository

于 2013-04-03T15:20:43.067 に答える