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>