咱們在使用JPA動態查詢構建查詢條件時,爲了實現安全的類型檢查,經常須要引用Hibernate JPA Metamodel Generator自動爲咱們生成靜態元模型類。java
而這些類因爲編譯時由Hibernate JPA Metamodel Generator自動生成在其餘路徑下,IDEA默認沒法自動識別這些「特別」的類,因此IDEA中的JPA動態查詢相關代碼經常會出現編譯錯誤。安全
若是你使用的是Gradle構建工具,只需在構建腳本中添加以下內容便可解決此類問題啦。工具
build.gradle添加的配置以下:gradle
// 全部自動生成的代碼(好比JPAMetaModelEntityProcessor自動生成的代碼等)都統一存放到build/generated目錄下 // 同時將該目錄添加到main SourceSets中,以便IDEA能夠識別 compileJava { options.compilerArgs << "-s" options.compilerArgs << "$projectDir/build/generated" doFirst { file(new File("$projectDir/build/generated")).mkdirs() } } sourceSets.main.java.srcDirs += "$projectDir/build/generated"
執行gradle clean build以後,再次用IDEA打開工程,編譯問題就都解決啦。ui