Querydsl - зарегистрировать пользовательские типы в pom.xml - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь зарегистрировать свой пользовательский тип в экспортере метаданных querydsl.

У меня есть следующее перечисление:

public enum RoleName {
    ADMIN, USER;
}

Затем я создал свой пользовательский тип для querydsl:

public class RoleNameType extends EnumByNameType<RoleName> {
    public RoleNameType(Class<RoleName> type) {
        super(type);
    }
}

Настройка моего плагина querydsl в pom.xml:

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

Во время сборки возвращается исключение: «Причина: java.lang.ClassNotFoundException: com.example.RoleNameType»

Я уже проверил, что в именах пакетов или классов нет опечаток.Любые идеи, как использовать экспортер метаданных querydsl вместе с моим пользовательским перечислением?

1 Ответ

0 голосов
/ 01 мая 2019

Это не совсем решение вашей проблемы, но, возможно, это поможет быстрее прийти к выводу, если кто-то столкнется с этой проблемой:

Я хотел сделать то же самое, что вы описали, и потерпел неудачутаким же образом.После некоторого времени попыток и просмотра веб-страниц я столкнулся с проблемой проекта GDHUB querydsl # 1865 .В ответе @ timowest говорится, что источники проекта не являются частью пути к классу плагина.Следовательно, экспортер не может найти класс, указанный в сопоставлении типов, что приводит к исключению ClassNotFoundException.

Он также заявил, что зависимости проекта доступны в classpath.Я подумал, я попробую и извлек свои перечисления, поместив их в отдельный модуль в моем проекте.Новый модуль был добавлен в качестве зависимости от моего исходного модуля.К сожалению, результат был тот же: возникло исключение ClassNotFoundException, даже если на пути к классам появился модуль enum, проверяющий выходные данные отладки Maven.

@ timowest отреагировал на эту проблему в 2016 году и закрыл проблему, как решенную.Я не нашел никаких признаков того, что это было на самом деле решено.Так что, полагаю, простого решения не существует.В любом случае, проект, похоже, неактивен с одного года.

...