Ошибка при запуске загрузочного приложения Spring с Maven: имя для привязки параметра не должно быть пустым - PullRequest
0 голосов
/ 04 мая 2018

Моё загрузочное приложение Spring, использующее Spring boot 1.5.12 и Java 8, прекрасно работает в моей среде разработки, но при развертывании в среде тестирования я сталкиваюсь с трудностями:

Я запускаю приложение с помощью: mvn spring-boot: run, и выполнение останавливается с ошибкой:

java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters.

Я провел несколько поисков и понял, что для того, чтобы методы моих репозиториев работали, как этот:

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long>, UserRepositoryCustom {

    @Query("SELECT u FROM User u WHERE u.primaryEmail.emailAddress = :emailAddress "
            + "AND u.deleted = 0")
    Optional<User> findByPrimaryEmailAddress(String emailAddress);

Мне нужно скомпилировать с параметром "-parameters", потому что я не помещаю аннотацию @Param в параметре "emailAddress".

Он работает в Eclipse, поскольку для компилятора активирована опция, но когда я использую maven для компиляции приложения вне Eclipse, эта опция должна быть установлена.

Моя проблема заключается в том, что в документации по загрузке Spring , и так как я использую по умолчанию spring-boot-maven-plugin в моем pom.xml

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>

он должен управлять этим параметром компилятора автоматически, и, похоже, это не так.

Когда я сравниваю spring-boot-starter-parent-1.5.12.RELEASE.pom и pom последней версии весенней загрузки на github, я не могу увидеть свою версию 1.5.12

<parameters>true</parameters>

У вас есть идеи, как я могу исправить мою проблему?

Я попытаюсь заменить плагин spring-boot-maven на плагин maven-compiler-plugin аргументом компилятора "-parameters", но я был бы более уверен, если бы мог использовать плагин spring-boot-maven-plugin по умолчанию .

Спасибо!

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Я думаю, что опция "-parameters" в spring-boot-maven-plugin ", вероятно, была добавлена ​​недавно, и документация неверна для Spring boot 1.5.12 (возможно, для Spring boot 2.0.0)

Я решил проблему, настроив себе компилятор maven:

    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
            <compilerArgs>
                <arg>-parameters</arg>
            </compilerArgs>
        </configuration>
    </plugin>

Важно: аргумент "-parameters" должен быть установлен

0 голосов
/ 04 мая 2018

Вам нужен параметр для emailAddress, jpql не может понять, какой параметр задан.

Optional<User> findByPrimaryEmailAddress(@Param("emailAddress") String emailAddress);

Попробуйте с этим!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...