NotFoundAction.EXCEPTION pas lancer une exception

Telmo Marques:

J'ai la relation suivante:

@Entity
public class SomeEntity {
    //...

    @EmbeddedId
    private SomeEntityIdentity id;

    @OneToOne
    @NotFound(action = NotFoundAction.EXCEPTION) //This is the important bit
    @JoinColumns({
        //...
    })
    private OtherEntity example;

    //...
}

Ensuite, j'utilise les données de printemps findOne()pour saisir mon entité par le Id:

SomeEntityIdentity id = new SomeEntityIdentity();
id.setAttribute1(1);
id.setAttribute2(new BigDecimal(123));
return this.someEntityRepository.findOne(id);

Le problème est qu'aucune exception est levée si OtherEntityon ne trouve pas, comme findOne()retourne simplement nulle. Même si je mets @OneToOne(optional = false)je reçois encore une valeur nulle de findOne(), quand je à la seule exception OtherEntityd'être nulle.

Je crois qu'une exception devrait être levée. Est-ce que quelqu'un a des idées tout?

Je vous remercie!


Edit: les classes Identity et le référentiel ci - dessous.

@Embeddable
public class SomeEntityIdentity implements Serializable {
    private int attribute1;
    private BigDecimal attribute2;

    public void setAttribute1(int attribute1) {
        this.attribute1 = attribute1;
    }

    public void setAttribute2(BigDecimal attribute2) {
        this.attribute2 = attribute2;
    }
}

public interface SomeEntityRepository extends JpaRepository<SomeEntity, SomeEntityIdentity> {
}
Telmo Marques:

Se est avéré être une incompatibilité entre les versions Hibernate et Spring données.

Ce projet a été l' utilisation d' Hibernate 4.3.1.Finalpour tirer parti des APP 2.1dispose; mais spring-data-jpa 1.6.6.RELEASE, cela ne prend pas en charge cette version Hibernate.

Parce que tout fonctionnait correctement (jusqu'à ce numéro) , je ne l' ai pas remarqué cela d'abord. Quand j'ai essayé la mise à niveau spring-data-jpaà une mise en veille prolongée 4.3version compatible je ne pouvais pas, parce que les spring-data-jpasauts de Hibernate 3 à 5 Mise en veille prolongée sur les 2.0.xversions. Cela semble également exiger Java 8, ce qui était un aller pas pour moi.

A fini par déclasser hiberner 3.6.10.Finalet tout a commencé à travailler sur OK.

TL; DR: Toujours vérifier la compatibilité des versions entre le printemps et d' autres bibliothèques, même s'il n'y a pas d' erreurs évidentes.

Je voulais juste terminer en disant que la gestion de la version Spring est une douleur totale.


Travailler configuration de dépendance:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.10.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.6.10.Final</version>
</dependency>

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.6.6.RELEASE</version>
</dependency>

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=219010&siteId=1
conseillé
Classement