即使使用noarg插件,也没有使用Kotlin的JPA实体的默认构造函数

我开始学习Kotlin,目前版本为1.1.0。 首先,我正在重写我的实体和当前项目中的测试。

我已经读过,你需要实体类的“kotlin-maven-noarg”,以便它生成默认参数少的构造函数,但是我的项目仍然抱怨。

你能告诉我我做错了什么吗?

pom.xml中:

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> {...} <build> <sourceDirectory>src/main/java</sourceDirectory> <resources> <resource> <directory>src/main/resources</directory> </resource> </resources> <testSourceDirectory>src/test/java</testSourceDirectory> <testResources> <testResource> <directory>src/test/resources</directory> </testResource> </testResources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>test-compile</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <id>compile</id> <phase>compile</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>testCompile</id> <phase>test-compile</phase> <goals> <goal>testCompile</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>kotlin-maven-plugin</artifactId> <groupId>org.jetbrains.kotlin</groupId> <version>${kotlin.version}</version> <configuration> <compilerPlugins> <plugin>jpa</plugin> </compilerPlugins> <pluginOptions> <option>jpa:annotation=javax.persistence.Entity</option> </pluginOptions> </configuration> <dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-noarg</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </plugin> </plugins> </build> <properties> {...} <junit.version>4.12</junit.version> <kotlin.version>1.1.0</kotlin.version> </properties> {...} <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-stdlib</artifactId> <version>${kotlin.version}</version> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-test</artifactId> <version>${kotlin.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId> <version>${kotlin.version}</version> </dependency> </dependencies> </project> 

测试课:

 @RunWith(SpringJUnit4ClassRunner::class) @ContextConfiguration(classes = arrayOf(VedicaConfig::class)) class InitStructures { private var vedicaDBInit: VedicaDBInit? = null @Before fun init() { vedicaDBInit = VedicaDBInit() } @Test fun initClientFolders() { } } 

基本上它抱怨说,当我尝试部署到Tomcat,当我也运行测试,它错过了默认的构造函数。

我正在使用Intellij的想法,所以部署我只是点击调试/运行与选择的Tomcat运行配置和运行测试我只需右键单击测试类,也运行/调试。

在运行测试之前,您是否尝试过运行Maven compile目标? 我发现Intellij的Kotlin运行/测试的默认配置不会激发Maven插件,因此不会应用no-arg插件。

尝试运行你的compile目标,然后再次运行你的测试。