QueryDSL 查询未转换为对象
QueryDSL query not cast to object
我正在从 SQLServer 使用 QueryDSL 进行查询。这些 bean 是在构建时使用 maven 生成的。在我尝试将结果转换为对象本身之前,一切都运行良好。
@RequestMapping("getAbsenceCauses")
public List<CauseOfAbsences> getAbsenceCauses() {
SQLTemplates templates = new SQLServerTemplates();
Configuration configuration = new Configuration(templates);
SQLQueryFactory queryFactory = new SQLQueryFactory(configuration, dataSource);
CauseOfAbsences absence = new CauseOfAbsences("c");
List<CauseOfAbsences> absenceCauses = queryFactory.from(absence).list(absence);
return absenceCauses;
}
在运行时我收到以下异常:
java.lang.IllegalArgumentException: RelationalPath based projection can only be used with generated Bean types
另一个 post 说我必须“
您需要按照 Bean class 生成中描述的 here 生成 bean 类型。"
但是这些bean是maven生成的。我可以做些什么来告诉 Maven 生成这些类型吗?目前我生成的文件如下:
<plugin>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-maven-plugin</artifactId>
<version>${querydsl.version}</version>
<executions>
<execution>
<goals>
<goal>export</goal>
</goals>
</execution>
</executions>
<configuration>
<jdbcDriver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcDriver>
<jdbcUrl>jdbc:sqlserver://T00-STEMIG.some.where:1433;databaseName=Test</jdbcUrl>
<packageName>net.neobp.neo.query</packageName>
<targetFolder>${project.basedir}/target/generated-sources/java</targetFolder>
<jdbcUser>user</jdbcUser>
<jdbcPassword>pass</jdbcPassword>
<schemaPattern>dbo</schemaPattern>
</configuration>
<dependencies>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>sqljdbc4</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</plugin>
好的,自己找到的:
在文档中有一些其他可以配置的参数的提示。我找到了 exportBeans 属性,它指示生成查询返回的对象。
刚刚将它添加到 Maven 配置部分并且它起作用了。
<schemaPattern>dbo</schemaPattern>
<exportBeans>true</exportBeans>
我正在从 SQLServer 使用 QueryDSL 进行查询。这些 bean 是在构建时使用 maven 生成的。在我尝试将结果转换为对象本身之前,一切都运行良好。
@RequestMapping("getAbsenceCauses")
public List<CauseOfAbsences> getAbsenceCauses() {
SQLTemplates templates = new SQLServerTemplates();
Configuration configuration = new Configuration(templates);
SQLQueryFactory queryFactory = new SQLQueryFactory(configuration, dataSource);
CauseOfAbsences absence = new CauseOfAbsences("c");
List<CauseOfAbsences> absenceCauses = queryFactory.from(absence).list(absence);
return absenceCauses;
}
在运行时我收到以下异常:
java.lang.IllegalArgumentException: RelationalPath based projection can only be used with generated Bean types
另一个 post 说我必须“ 您需要按照 Bean class 生成中描述的 here 生成 bean 类型。"
但是这些bean是maven生成的。我可以做些什么来告诉 Maven 生成这些类型吗?目前我生成的文件如下:
<plugin>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-maven-plugin</artifactId>
<version>${querydsl.version}</version>
<executions>
<execution>
<goals>
<goal>export</goal>
</goals>
</execution>
</executions>
<configuration>
<jdbcDriver>com.microsoft.sqlserver.jdbc.SQLServerDriver</jdbcDriver>
<jdbcUrl>jdbc:sqlserver://T00-STEMIG.some.where:1433;databaseName=Test</jdbcUrl>
<packageName>net.neobp.neo.query</packageName>
<targetFolder>${project.basedir}/target/generated-sources/java</targetFolder>
<jdbcUser>user</jdbcUser>
<jdbcPassword>pass</jdbcPassword>
<schemaPattern>dbo</schemaPattern>
</configuration>
<dependencies>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>sqljdbc4</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</plugin>
好的,自己找到的:
在文档中有一些其他可以配置的参数的提示。我找到了 exportBeans 属性,它指示生成查询返回的对象。
刚刚将它添加到 Maven 配置部分并且它起作用了。
<schemaPattern>dbo</schemaPattern>
<exportBeans>true</exportBeans>