Java - Hibernate Fallo Validacion

   
Vista:

Hibernate Fallo Validacion

Publicado por Miguel (19 intervenciones) el 06/02/2015 19:51:59
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
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 + '}';
    }
 
 
 
 
}

¿Cual es el error?

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder