簡體   English   中英

QueryDSL / APT和靜態導入生成的類

[英]Classes generated by QueryDSL/APT and static imports

顯然我不能在使用靜態導入的單元測試中使用用APT生成的類。 (Maven示例項目可以在這里下載)

如果是以下示例類

import com.mysema.query.jpa.impl.JPAQuery;

public class UserStore {

    public void something() {
        new JPAQuery(null).from(QUser.user).list(QUser.user.login);
    }

}

改為

import static something.QUser.user;
import com.mysema.query.jpa.impl.JPAQuery;

public class UserStore {

    public void something() {
        new JPAQuery(null).from(user).list(user.login);
    }

}

構建過程(mvn clean install)將失敗:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.466s
[INFO] Finished at: Wed May 30 16:05:40 CEST 2012
[INFO] Final Memory: 18M/150M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project apt-bug: Compilation failure: Compilation failure:
...

完整的錯誤消息

這是否意味着我不能在單元測試中將這些生成的類與靜態導入一起使用,或者pom.xml文件中是否存在問題?

編輯:

POM文件: http//pastebin.com/gvycZmXD

這可能與https://github.com/mysema/querydsl/issues/158有關

我還沒有時間對此進行調查。

編輯

現在已經在Java 7中修復了這個問題

我假設問題位於靜態導入中,導致錯誤消息顯示導入的QUser.user既不是類也不是接口。 這看起來像用戶只是Class Quser的一個屬性,它可以解釋錯誤消息。

/home/xxx/apt-bug/src/main/java/something/UserStore.java:3: cannot find symbol
symbol  : class QUser
location: package something
import static something.QUser.user;
                       ^
/home/xxx/apt-bug/src/main/java/something/UserStore.java:3: static import only from classes and interfaces
import static something.QUser.user;
^

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM