Referencia: https://sourceforge.net/p/openxava/discussion/437013/thread/b998ce0a/#b69b
Pasos:
1) Doy de alta una transacción.
2) asigno el número.
3) Al intentar grabar una transacción sin items, arrojar el error: "Es obligado que Código en Item tenga valor"
El problema es que ya creo un item y lo toma como valido porque la propiedad Tipo ya tiene un valor.
4) Creo un item y asigno el campo código.
5) Intento grabar y nuevamente arroja el mismo error.
Nuevamente, al asignar el campo código ya crea otro item y lo toma como válido el enum Tipo tiene un valor.
Si en la clase Item, a la propiedad Tipo (enum) le quitó la opción de required, no hay problema
Código:
// Clase enum
package org.openxava.test.model;
public enum MiEnum {
EnumA, EnumB, EnumC
}
// Clase Transaccion
@Entity
public class Transaccion {
@Id
private int numero;
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
@ElementCollection
@ListProperties("codigo, tipo")
private Collection<Item> items;
public Collection<Item> getItems() {
return items;
}
public void setItems(Collection<Item> items) {
this.items = items;
}
}
// Clase Item
@Embeddable
public class Item {
@Column(length=20) @Required
private String codigo;
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
@Required
private MiEnum tipo;
public MiEnum getTipo() {
return tipo;
}
public void setTipo(MiEnum tipo) {
this.tipo = tipo;
}
}
Aporto otro ejemplo por si ayuda a la resolución.
El error está en tener una colección incrustada con una enumeración obligatoria.
El ejemplo nuevo está en
https://sourceforge.net/p/openxava/discussion/437013/thread/fcb0c5d5/