Tengo la siguiente relación:
@Entity
public class SomeEntity {
//...
@EmbeddedId
private SomeEntityIdentity id;
@OneToOne
@NotFound(action = NotFoundAction.EXCEPTION) //This is the important bit
@JoinColumns({
//...
})
private OtherEntity example;
//...
}
Entonces, yo uso de los datos de Primavera findOne()
a agarrar mi entidad por el Id:
SomeEntityIdentity id = new SomeEntityIdentity();
id.setAttribute1(1);
id.setAttribute2(new BigDecimal(123));
return this.someEntityRepository.findOne(id);
El problema es que no hay excepción si OtherEntity
no se encuentra, ya que findOne()
simplemente devuelve un valor nulo. Incluso si fijo @OneToOne(optional = false)
sigo teniendo un valor nulo a partir findOne()
, cuando estaba sola excepción de OtherEntity
que sea nula.
Creo que una excepción debe ser desechado. ¿Alguien tiene alguna idea?
¡Gracias!
Editar: Identidad y clases Repositorio de abajo.
@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> {
}
Resultó ser una incompatibilidad entre versiones de Hibernate y datos de primavera.
Este proyecto fue usando Hibernate 4.3.1.Final
para tomar ventaja de la APP 2.1
cuenta; pero con spring-data-jpa
1.6.6.RELEASE
, que no es compatible con esa versión de hibernación.
Debido a que todo estaba funcionando correctamente (hasta este número) no se dio cuenta de esto al principio. Cuando traté de actualización spring-data-jpa
a una hibernación 4.3
versión compatible que no podía, porque spring-data-jpa
los saltos de Hibernate 3 a 5 Hibernate en 2.0.x
versiones. Esto también parece requerir de Java 8, así que fue un no ir por mí.
Terminó la degradación hasta la hibernación 3.6.10.Final
y todo comenzó a trabajar bien.
TL; DR: Siempre comprobar la compatibilidad de versiones entre primavera y otras bibliotecas, incluso si no hay errores obvios.
Sólo quería terminar diciendo que la gestión de versiones de Primavera es un dolor total.
Trabajando configuración dependencia:
<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>