Skip to content

@Modifing not supported by vavr integration [DATAJPA-1827] #2115

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
spring-projects-issues opened this issue Dec 5, 2020 · 2 comments
Closed
Assignees
Labels
in: core Issues in core support type: bug A general bug

Comments

@spring-projects-issues
Copy link

Juan Pablo Bochard opened DATAJPA-1827 and commented

I'm working with spring-boot 2.3.5.RELEASE and vavr 0.10.3 and I have this error when I try to invoke the method disableEnabledCredentials() defined in this way:

public interface ICredentialDAO extends Repository<Credential, String> {

    @Modifying
    @Query("update Credential d set d.enabled = false where d.enabled = true")
    Try<Integer> disableEnabledCredentials();

    Option<Credential> findByEnabled(boolean enabled);

    Try<Credential> save(Credential credential);

}

When I invoke the disableEnabledCredentials() method I get the following error:

"Modifying queries can only use void or int/Integer as return type!"; nested exception is java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type!

I know that vavr is supported by spring-data-jpa because I has using this features in other methods as findByEnabled() or save().

The support by vavr should't include @Modifying allowing return of Try<Void> or Try<Integer>?

My pom includes:

 

<properties>
    <spring-boot-dependencies.version>2.3.5.RELEASE</spring-boot-dependencies.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot-dependencies.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-undertow</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>io.vavr</groupId>
        <artifactId>vavr</artifactId>
        <version>0.10.3</version>
    </dependency>

 


Affects: 2.3.5 (Neumann SR5)

Referenced from: pull request #438

Backported to: 2.4.3 (2020.0.3), 2.3.7 (Neumann SR7)

@spring-projects-issues
Copy link
Author

Mark Paluch commented

Moved to Spring Data JPA as @Modifying is a Spring Data JPA feature

@spring-projects-issues
Copy link
Author

Mark Paluch commented

The method that inspected the return type didn't consider nullable/execution wrappers. That should be fixed with the next bugfix release

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in: core Issues in core support type: bug A general bug
Projects
None yet
Development

No branches or pull requests

2 participants