Java Querydsl-在pom.xml中注册自定义类型

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);

我正在尝试在querydsl元数据导出器中注册自定义类型

我有这样的枚举:

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插件的依赖项中。我会努力找到我的测试项目,并提供完整的答案。太棒了。谢谢你回复我。在插件本身中设置依赖项是缺少的一点。现在,它对我也起作用了。请随意添加此作为正确答案。