QueryDSL查询未强制转换为对象

时间:2015-07-30 09:10:15

标签: querydsl

我正在从SQLServer查询QueryDSL。使用maven在构建时生成bean。一切都运行良好,直到我尝试将结果转换为对象本身。

@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

另一篇文章说我必须“ 您需要在Bean类生成下生成所描述的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>

1 个答案:

答案 0 :(得分:1)

好的,自己找到了:

在文档中有一些可以配置的其他参数的提示。我找到了exportBeans属性,它指示生成查询返回的对象。

只需将其添加到maven配置部分即可。

      <schemaPattern>dbo</schemaPattern>
      <exportBeans>true</exportBeans>