QueryDsl 类 未在 IntelliJ 中生成
QueryDsl classes are not generated in IntelliJ
我有以下 class,我想尝试 querydsl 并进行一些基本查询。使用 intelliJ 2017.3,没有生成 class QUser。我试过用谷歌搜索我的问题,每个 SO 答案似乎都提供了不同的解决方案(有些没有用,有些我不明白,因为我以前从未使用过这些东西)而且大多数教程似乎做的都是完全不同的事情。
我已经尝试使用 Spring Boot 似乎内置的任何东西进行查询(不知道,只是看起来可行,但从外观上看它太基础了)并且查询工作得很好所以我猜这是一些配置问题(我是专家和 spring 菜鸟)。
// User.java
@Entity
@Table(name = "symptoms")
public class Symptom
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String name;
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
我已将这些内容添加到 pom.xml:
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
我已经成功地使用好的代码生成了 Q classes。只需调用一次,classes 就会在 target/generated-sources/java
中生成。您可以在倒数第二行更改它。
GenericExporter exporter = new GenericExporter();
exporter.setKeywords(Keywords.JPA);
exporter.setEntityAnnotation(Entity.class);
exporter.setEmbeddableAnnotation(Embeddable.class);
exporter.setEmbeddedAnnotation(Embedded.class);
exporter.setSupertypeAnnotation(MappedSuperclass.class);
exporter.setSkipAnnotation(Transient.class);
exporter.setTargetFolder(new File("target/generated-sources/java"));
exporter.export(ApplicationClass.class.getPackage());
在最后一行,ApplicationClass
是启动 spring 应用程序的 class。
您可以通过以下方式解决问题:打开 目标 文件夹 --> 右键单击 generated-sources 文件夹 -> 将目录标记为 -> 生成的源 root.
正确标记 generated sources 文件夹后,它对我来说没有任何问题。如果 IntelliJ 不能立即识别标记的文件夹并且错误仍然存在,mvn clean install
通常会有所帮助。
我有以下 class,我想尝试 querydsl 并进行一些基本查询。使用 intelliJ 2017.3,没有生成 class QUser。我试过用谷歌搜索我的问题,每个 SO 答案似乎都提供了不同的解决方案(有些没有用,有些我不明白,因为我以前从未使用过这些东西)而且大多数教程似乎做的都是完全不同的事情。
我已经尝试使用 Spring Boot 似乎内置的任何东西进行查询(不知道,只是看起来可行,但从外观上看它太基础了)并且查询工作得很好所以我猜这是一些配置问题(我是专家和 spring 菜鸟)。
// User.java
@Entity
@Table(name = "symptoms")
public class Symptom
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotNull
private String name;
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
}
我已将这些内容添加到 pom.xml:
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>4.1.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
我已经成功地使用好的代码生成了 Q classes。只需调用一次,classes 就会在 target/generated-sources/java
中生成。您可以在倒数第二行更改它。
GenericExporter exporter = new GenericExporter();
exporter.setKeywords(Keywords.JPA);
exporter.setEntityAnnotation(Entity.class);
exporter.setEmbeddableAnnotation(Embeddable.class);
exporter.setEmbeddedAnnotation(Embedded.class);
exporter.setSupertypeAnnotation(MappedSuperclass.class);
exporter.setSkipAnnotation(Transient.class);
exporter.setTargetFolder(new File("target/generated-sources/java"));
exporter.export(ApplicationClass.class.getPackage());
在最后一行,ApplicationClass
是启动 spring 应用程序的 class。
您可以通过以下方式解决问题:打开 目标 文件夹 --> 右键单击 generated-sources 文件夹 -> 将目录标记为 -> 生成的源 root.
正确标记 generated sources 文件夹后,它对我来说没有任何问题。如果 IntelliJ 不能立即识别标记的文件夹并且错误仍然存在,mvn clean install
通常会有所帮助。