我使用下面的maven pom.xml文件,无法生成querydsl文件。
我找到了一个问题:Kotlin-Kapt Annotation Processor not working with maven
我想从kotlin实体类生成jpa querydsl文件。
有一个很好的在线示例,说明如何使用gradle https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-querydsl/build.gradle生成dsl文件。
但是我试图在maven中实现这个并且没有运气。我现在的pom在下面。有谁知道问题可能是什么?提前谢谢。
使用querydsl3,我使用4
<div><input type="text" class="txtbox" id=@Guid.NewGuid().ToString() /></div>
$(document).ready(function () {
var full_url = document.URL;
var url_array = full_url.split('/') // Split the string into an array with / as separator
var last_segment = url_array[url_array.length - 1]; // Get the last part of the array (-1)
$.ajax({
cache: false,
type: "POST",
url: '@Url.Action("PageLoad", "Instructor")',
data: { id: last_segment },
success: function (data) {
$.each(data, function(key, val) {
$.each(val, function(key,val)
{
$.each(val, function (key, val) {
$("#tbl tr.item").each(function () {
//$(this).find("input.txtbox").attr("disabled", "disabled");
$(this).find("input.txtbox").value = val.Result; //Here i'm trying to set value
alert(val.Result);
return false;
});
});
});
});
}
});
});
感谢
答案 0 :(得分:3)
我今天遇到了这个。有一些问题在起作用:
<jpa>
块中注释掉<compilerPlugins>
行,它应该吐出你的Q类,但是你会丢失你的实体类'no-arg constructors。<compilerPlugins>
块从顶部<plugin>
- 级别向下移动到“编译”执行,但这有效地导致插件被忽略。我的项目将编译,但由于Spring配置类被视为final而我的实体类缺少no-arg默认构造函数,因此在运行时失败。我找到的解决方案是将kotlin-maven-plugin的<compile>
执行从compile
阶段移至process-sources
阶段,例如:
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<configuration>
<jvmTarget>1.8</jvmTarget>
<compilerPlugins>
<plugin>spring</plugin>
<plugin>jpa</plugin>
</compilerPlugins>
</configuration>
<executions>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
<classifier>jpa</classifier>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/test/kotlin</sourceDir>
<sourceDir>target/generated-sources/kapt/test</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-noarg</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
这适用于使用Spring-Data-JPA和Spring-Data-REST的Spring Boot项目。
答案 1 :(得分:0)
AFAIK是不可能的,因为QueryDSL插件分析源,而不是字节码。当然,它无法理解kotlin类的来源。
所以我看到的唯一方法是将实体类移动到单独的模块并在java中重写它们。
答案 2 :(得分:0)
N. DaSilva的示例对我不起作用,因为在kapt执行中缺少“生成源”阶段。以下配置解决了该问题。 (很抱歉,声誉不足,仅可在评论中举报)。
<executions>
<execution>
<id>compile</id>
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>kapt</id>
<phase>generate-sources</phase>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/kotlin</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
<classifier>jpa</classifier>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
</executions>