Querydsl이 코드 생성을 하려면 List, Set, Collection, Map 프로퍼티가 올바르게 인코딩 되어 있어야 한다.
올바르게 인코딩되지 않은 필드나 getter를 사용할 경우, 다음과 같은 에러가 발생한다.
java.lang.RuntimeException: Caught exception for field com.mysema.query.jdoql.testdomain.Store#products at com.mysema.query.apt.Processor$2.visitType(Processor.java:117) at com.mysema.query.apt.Processor$2.visitType(Processor.java:80) at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:827) at com.mysema.query.apt.Processor.getClassModel(Processor.java:154) at com.mysema.query.apt.Processor.process(Processor.java:191) ... Caused by: java.lang.IllegalArgumentException: Insufficient type arguments for List at com.mysema.query.apt.APTTypeModel.visitDeclared(APTTypeModel.java:112) at com.mysema.query.apt.APTTypeModel.visitDeclared(APTTypeModel.java:40) at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:696) at com.mysema.query.apt.APTTypeModel.<init>(APTTypeModel.java:55) at com.mysema.query.apt.APTTypeModel.get(APTTypeModel.java:48) at com.mysema.query.apt.Processor$2.visitType(Processor.java:114) ... 35 more
다음은 문제가 되는 필드 선언과 올바른 선언의 예를 보여주고 있다.
private Collection names; // WRONG private Collection<String> names; // RIGHT private Map employeesByName; // WRONG private Map<String,Employee> employeesByName; // RIGHT