Java Querydsl-在pom.xml中注册自定义类型
我正在尝试在querydsl元数据导出器中注册自定义类型 我有这样的枚举:Java Querydsl-在pom.xml中注册自定义类型,java,maven,querydsl,Java,Maven,Querydsl,我正在尝试在querydsl元数据导出器中注册自定义类型 我有这样的枚举: public enum RoleName { ADMIN, USER; } 然后,我为querydsl创建了自定义类型: public class RoleNameType extends EnumByNameType<RoleName> { public RoleNameType(Class<RoleName> type) { super(type);
public enum RoleName {
ADMIN, USER;
}
然后,我为querydsl创建了自定义类型:
public class RoleNameType extends EnumByNameType<RoleName> {
public RoleNameType(Class<RoleName> type) {
super(type);
}
}
公共类RoleNameType扩展了EnumByNameType{
公共角色名称类型(类类型){
超级(型);
}
}
pom.xml中的我的querydsl插件设置:
<plugin>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-maven-plugin</artifactId>
<version>4.2.1</version>
<executions>
<execution>
<goals>
<goal>export</goal>
</goals>
</execution>
</executions>
<configuration>
<jdbcDriver>oracle.jdbc.driver.OracleDriver</jdbcDriver>
<jdbcUrl>jdbc:oracle:thin:@localhost:1521:xe</jdbcUrl>
<jdbcUser>user</jdbcUser>
<jdbcPassword>pass</jdbcPassword>
<packageName>com.example</packageName>
<targetFolder>target/generated-sources/java</targetFolder>
<namePrefix>BLANK</namePrefix>
<schemaPattern>TASK_MANAGER_USER</schemaPattern>
<customTypes>
<customType>com.example.RoleNameType</customType>
</customTypes>
<typeMappings>
<typeMapping>
<table>TM_ROLE</table>
<column>ROLE_NAME</column>
<type>com.example.RoleName</type>
</typeMapping>
</typeMappings>
<numericMappings>
<numericMapping>
<total>1</total>
<decimal>0</decimal>
<javaType>java.lang.Boolean</javaType>
</numericMapping>
</numericMappings>
</configuration>
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.5</version>
</dependency>
</dependencies>
</plugin>
com.querydsl
querydsl maven插件
4.2.1
出口
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:xe
用户
通过
com.example
目标/生成的源代码/java
空白
任务管理器用户
com.example.RoleNameType
TM_角色
角色名称
com.example.RoleName
1.
0
java.lang.Boolean
com.oracle
ojdbc14
10.2.0.5
在生成过程中,将返回异常:
“原因:java.lang.ClassNotFoundException:com.example.RoleNameType”
我已经检查过包或类名中没有输入错误。
您知道如何将querydsl元数据导出器与我的自定义枚举一起使用吗?这并不能真正解决您的问题,但对于遇到此问题的其他人来说,它可能有助于更快地得出结论: 我想做和你描述的一样的事情,但以同样的方式失败了。在尝试和浏览网页一段时间后,我遇到了querydsl Github项目的问题@timowest的回复指出,项目的源代码不属于插件的类路径。因此,导出器无法找到类型映射中指定的类,从而导致ClassNotFoundException 他还指出,项目的依赖项在类路径中可用。我想,我尝试了一下,提取了我的枚举,将它们放在我项目中的一个单独模块中。新模块作为依赖项添加到我的原始模块中。不幸的是,结果是一样的:抛出了一个ClassNotFoundException,尽管enum模块出现在检查Maven调试输出的类路径上
@timowest在2016年就这一问题作出了回应,并在问题解决后关闭了该问题。我没有发现任何迹象表明问题已经得到解决。因此,我认为,没有简单的解决办法。不管怎么说,这个项目似乎一年后就停止了。这并不是你问题的真正解决方案,但可能有助于其他遇到这个问题的人更快地得出结论: 我想做和你描述的一样的事情,但以同样的方式失败了。在尝试和浏览网页一段时间后,我遇到了querydsl Github项目的问题@timowest的回复指出,项目的源代码不属于插件的类路径。因此,导出器无法找到类型映射中指定的类,从而导致ClassNotFoundException 他还指出,项目的依赖项在类路径中可用。我想,我尝试了一下,提取了我的枚举,将它们放在我项目中的一个单独模块中。新模块作为依赖项添加到我的原始模块中。不幸的是,结果是一样的:抛出了一个ClassNotFoundException,尽管enum模块出现在检查Maven调试输出的类路径上
@timowest在2016年就这一问题作出了回应,并在问题解决后关闭了该问题。我没有发现任何迹象表明问题已经得到解决。因此,我认为,没有简单的解决办法。无论如何,该项目自一年以来似乎一直处于非活动状态。您好,谢谢您的回复!事实上,我一段时间前就让它工作了,但没有时间提供解决方案。看起来我们做了同样的事情,将枚举放入单独的模块中,如您的描述中所示。我记得我必须在两个地方为带有枚举的模块添加依赖项:在原始maven模块中,以及在querydsl maven插件的依赖项中。我会努力找到我的测试项目,并提供完整的答案。太棒了。谢谢你回复我。在插件本身中设置依赖项是缺少的一点。现在,它对我也起作用了。请随意添加此作为正确答案。您好,谢谢您的回复!事实上,我一段时间前就让它工作了,但没有时间提供解决方案。看起来我们做了同样的事情,将枚举放入单独的模块中,如您的描述中所示。我记得我必须在两个地方为带有枚举的模块添加依赖项:在原始maven模块中,以及在querydsl maven插件的依赖项中。我会努力找到我的测试项目,并提供完整的答案。太棒了。谢谢你回复我。在插件本身中设置依赖项是缺少的一点。现在,它对我也起作用了。请随意添加此作为正确答案。