Foros del Web » Programación para mayores de 30 ;) » Java »

Hibernate Validación de clase embebida

Estas en el tema de Hibernate Validación de clase embebida en el foro de Java en Foros del Web. Hola a todos! Estoy validando las propiedades de una entidad antes de almacenarla en base de datos usando las anotaciones de hibernate. Resulta que una ...
  #1 (permalink)  
Antiguo 06/02/2015, 12:43
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 15 años, 5 meses
Puntos: 2
Hibernate Validación de clase embebida

Hola a todos!

Estoy validando las propiedades de una entidad antes de almacenarla en base de datos usando las anotaciones de hibernate.
Resulta que una propiedad de mi entidad es un componente embebido de otra clase.
Esta clase embebida es la clase NIF, cuyo atributo nif estoy intentando que siga una expresion regular (anotacion @Pattern) y que tenga una longitud determinado(anotacion @Size). Pues bien, las validaciones no están funcionando. Si yo intento persistir un objeto con con un objeto NIF con atributo nif de longitud mayor que la que he definido en la validación, el objeto se persiste sin mostrarme y no se genera ninguna excepción. También estoy intentando que el atributo nif de la clase NIF sea unico (mediante @Column(name="nif",unique=true)), pero tampoco funciona.
Sin embargo, las validaciones si funcionan sobre la clase que estoy persistiendo.

Estas son mis clases:

Código:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.vin.dominio;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;


@Embeddable
public class NIF implements Serializable{
    @Column(name="nif",unique=true)
    @Size(min=9,max=9)
    @Pattern(regexp="[XYZ0-9][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]", message="NIF incorrecto")
    private String nif;

    public NIF() {
    }

    public NIF(String nif) {
        this.nif = nif;
    }
    
    public String getNif() {
        return nif;
    }

    public void setNif(String nif) {
        this.nif = nif;
    }
    
    
}
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.vin.dominio;

import com.vin.utils.Sexo;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.validation.constraints.Size;


@Entity
@Table(name="Seguro")
public class Seguro implements Serializable{
  
    @Id
    @Column(name="idSeguro")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int idSeguro;
    
    @Embedded
    private NIF nif;
    
    @Column(name="nombre")
    @Size(min=3,max=10,message="Your name should be between 3 - 10 characters.")
    private String nombre;
    
    @Column(name="ape1")
    private String ape1;
    
    @Column(name="ape2")
    private String ape2;
    
    @Column(name="edad")
    private int edad;
    
    @Enumerated(EnumType.ORDINAL)
    private Sexo sexo;
    
    @Column(name="casado")
    private boolean casado;
    
    @Column(name="numHijos")
    private int numHijos;
    
    @Column(name="embarazada")
    private boolean embarazada;
    
    @Embedded
    private Cobertura cobertura;
    
    @Embedded
    private Enfermedades enfermedades;
    
    @Column(name="fechaCreacion")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date fechaCreacion;
    
    @OneToMany(mappedBy="seguro",cascade=CascadeType.ALL)
    private List<AsistenciaMedica> asistencias;
    
    public Seguro(){
    
    }

    public Seguro(NIF nif, String nombre, String ape1, String ape2, int edad, Sexo sexo, boolean casado, int numHijos, boolean embarazada, Cobertura cobertura, Enfermedades enfermedades, Date fechaCreacion) {
        this.nif = nif;
        this.nombre = nombre;
        this.ape1 = ape1;
        this.ape2 = ape2;
        this.edad = edad;
        this.sexo = sexo;
        this.casado = casado;
        this.numHijos = numHijos;
        this.embarazada = embarazada;
        this.cobertura = cobertura;
        this.enfermedades = enfermedades;
        this.fechaCreacion = fechaCreacion;
        
    }

    public int getIdSeguro() {
        return idSeguro;
    }

    public NIF getNif() {
        return nif;
    }

    public String getNombre() {
        return nombre;
    }

    public String getApe1() {
        return ape1;
    }

    public String getApe2() {
        return ape2;
    }

    public int getEdad() {
        return edad;
    }

    public Sexo getSexo() {
        return sexo;
    }

    public boolean isCasado() {
        return casado;
    }

    public int getNumHijos() {
        return numHijos;
    }

    public boolean isEmbarazada() {
        return embarazada;
    }

    public Cobertura getCobertura() {
        return cobertura;
    }

    public Enfermedades getEnfermedades() {
        return enfermedades;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public List<AsistenciaMedica> getAsistencias() {
        return asistencias;
    }

    public void setIdSeguro(int idSeguro) {
        this.idSeguro = idSeguro;
    }

    public void setNif(NIF nif) {
        this.nif = nif;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setApe1(String ape1) {
        this.ape1 = ape1;
    }

    public void setApe2(String ape2) {
        this.ape2 = ape2;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public void setSexo(Sexo sexo) {
        this.sexo = sexo;
    }

    public void setCasado(boolean casado) {
        this.casado = casado;
    }

    public void setNumHijos(int numHijos) {
        this.numHijos = numHijos;
    }

    public void setEmbarazada(boolean embarazada) {
        this.embarazada = embarazada;
    }

    public void setCobertura(Cobertura cobertura) {
        this.cobertura = cobertura;
    }

    public void setEnfermedades(Enfermedades enfermedades) {
        this.enfermedades = enfermedades;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public void setAsistencias(List<AsistenciaMedica> asistencias) {
        this.asistencias = asistencias;
    }

    @Override
    public String toString() {
        return "Seguro{" + "idSeguro=" + idSeguro + ", nif=" + nif + ", nombre=" + nombre + ", ape1=" + ape1 + ", ape2=" + ape2 + ", edad=" + edad + ", sexo=" + sexo + ", casado=" + casado + ", numHijos=" + numHijos + ", embarazada=" + embarazada + ", cobertura=" + cobertura + ", enfermedades=" + enfermedades + ", fechaCreacion=" + fechaCreacion + ", asistencias=" + asistencias + '}';
    }
    
    
 
    
}
¿Que está fallando? Gracias de antemano

Etiquetas: clase, hibernate, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:23.