2012-04-27 12 views
6

Estoy trabajando con Hibernate y JPA. Tengo una entidad llamada Customer que hace referencia a un ParentCustomer:Objeto nulo si no se encuentra la entidad

public class Customer { 
    @Id 
    @GeneratedValue 
    @Column(name = "CustomerID") 
    private int id; 

    @ManyToOne 
    @JoinColumn(name = "ParentCustomerID") 
    private Customer parent; 

    // ... 
} 

Pero en mi db hay algunos clientes que no tienen padres por lo que el ParentCustomerID se establece en 0. La excepción consigo cuando pruebo mi clase es:

javax.persistence.EntityNotFoundException: Unable to find it.keyforup.pat.data.entities.Customer with id 0

¿Hay una manera de establecer el ParentCustomer a null cuando id es 0?

+3

por qué dices 0? Si desea que la entidad sea 'nula', entonces el valor de la clave externa debe ser' nulo'. –

+0

Estoy trabajando en un db utilizado por una aplicación de un tercero, esta aplicación establece el ID padre en 0 cuando no hay un padre para un cliente ... así que me aseguraría de que cada vez que el padre no se encuentre el 'padre' 'propiedad se establece en nulo. – davioooh

+1

Sin embargo, este no es un comportamiento legítimo de la base de datos. Además, si se implicó la validación estricta de la restricción de la base de datos, ni siquiera podían hacer eso ... –

Respuesta

19

probar este

@ManyToOne 
@JoinColumn(name = "ParentCustomerID") 
@NotFound(action = NotFoundAction.IGNORE) 
private Customer parent; 
+0

Esto fue sugerido en el duplicado exacto que publiqué. –

+0

Tal como suceden, he tenido este problema en el pasado y lo resolví con la anotación no encontrada, así que cuando vi el hilo, fue como estar en una cinta de correr, decidí publicar la respuesta inmediatamente antes de que alguien me golpeara. . No vi la publicación duplicada de primera mano: Buena llamada. – Bitmap

Cuestiones relacionadas