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 OtherEntity
on 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 OtherEntity
d'ê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> {
}
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.Final
pour tirer parti des APP 2.1
dispose; 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.3
version compatible je ne pouvais pas, parce que les spring-data-jpa
sauts de Hibernate 3 à 5 Mise en veille prolongée sur les 2.0.x
versions. Cela semble également exiger Java 8, ce qui était un aller pas pour moi.
A fini par déclasser hiberner 3.6.10.Final
et 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>