Trabajando ManyToOne estoy teniendo un comportamiento extraño en la aplicación que no había visto antes. Sucede de las iguiente forma:
Tengo una clase incrustable que hace referencia a otra clase llamada Capitulos
Uso la clase en una llamada Diagnostico, usando EllementCollection
Cuando estoy adicionando registros en el detalle, puedos seleccionar hasta dos registro, pero al usar el combo para adiconar el tercero, se bloquea y no se puede seleccionar. Lo curioso es que si le doy clic sobre el combo y luego TAB, se habilitan los botones para crear y editar la referencia (que estaban bloqueados con NoCreate y Nomodify). Si uso losbotones y luego cancelar, me deja agregar otros dos registros y así sucesivamente.
Esta muy raro este comprotamiento. Adjunto las clases para que alguien pueda ver si en verdad es un bug o algo hago mal.
@Entity
@View(members=
"Auditoria [ sistema ;" +
"auditor, fechaCierre ]"+
"Observaciones {observaciones } ;" +
"Calificacion {calificacion } ")
@Table(name="diagnostico")
public class Diagnostico {
@Id@Hiddenprivateintiddiagnostico;@ManyToOne@DescriptionsList(descriptionProperties="sistema,descripcion")@NoCreate@NoModify@JoinColumn(name="sistema",referencedColumnName="sistema")@ReferenceView("SistemaSimple")privateProcesoDeGestionsistema;@Column(length=50)privateStringauditor;@Column(name="fechacierre")privateDatefechaCierre;@Column(length=1000)@Stereotype("MEMO")privateStringobservaciones;@ElementCollection@CollectionTable(name="diagnosticocapitulo",joinColumns=@JoinColumn(name="iddiagnostico"))@ListProperties("capitulo.numeral, puntaje ")privateCollection<DetalleDiagnostico>calificacion;publicintgetIddiagnostico(){returniddiagnostico;}publicvoidsetIddiagnostico(intiddiagnostico){this.iddiagnostico=iddiagnostico;}publicProcesoDeGestiongetSistema(){returnsistema;}publicvoidsetSistema(ProcesoDeGestionsistema){this.sistema=sistema;}publicStringgetAuditor(){returnauditor;}publicvoidsetAuditor(Stringauditor){this.auditor=auditor;}publicDategetFechaCierre(){returnfechaCierre;}publicvoidsetFechaCierre(DatefechaCierre){this.fechaCierre=fechaCierre;}publicStringgetObservaciones(){returnobservaciones;}publicvoidsetObservaciones(Stringobservaciones){this.observaciones=observaciones;}@PrePersistprivatevoidpreGrabar(){Queryquery=XPersistence.getManager().createQuery("select max(d.iddiagnostico) from Diagnostico d ");IntegerlastNumber=(Integer)query.getSingleResult();this.iddiagnostico=lastNumber==null?1:lastNumber+1;}publicCollection<DetalleDiagnostico>getCalificacion(){returncalificacion;}publicvoidsetCalificacion(Collection<DetalleDiagnostico>calificacion){this.calificacion=calificacion;}
@Entity
@Views({
@View(name="CapituloSimple", members = "numeral, descripcion")})
@View(members=
"sistema ; " +
"Capítulo [numeral, nombre; " +
"responsable, presupuesto, fechaEstimada ] ")
@Table(name="capitulos")
public class Capitulos {
@Id@Hidden@GenericGenerator(name="system-uuid",strategy="uuid")@Column(length=32)privateintidcapitulo;@ManyToOne@DescriptionsList(descriptionProperties="sistema,descripcion")@NoCreate@NoModify@JoinColumn(name="sistema",referencedColumnName="sistema")@ReferenceView("SistemaSimple")privateProcesoDeGestionsistema;@Column(length=5,name="numeral")privateStringnumeral;@Column(name="nombre",length=50)@RequiredprivateStringnombre;@Column(name="responsable",length=30)privateStringresponsable;@Column(name="presupuesto")privateBigDecimalpresupuesto;@Column(name="fechaestimada")privateDatefechaEstimada;publicStringgetNombre(){returnnombre;}publicvoidsetNombre(Stringnombre){this.nombre=nombre;}publicStringgetResponsable(){returnresponsable;}publicvoidsetResponsable(Stringresponsable){this.responsable=responsable;}publicBigDecimalgetPresupuesto(){returnpresupuesto;}publicvoidsetPresupuesto(BigDecimalpresupuesto){this.presupuesto=presupuesto;}publicDategetFechaEstimada(){returnfechaEstimada;}publicvoidsetFechaEstimada(DatefechaEstimada){this.fechaEstimada=fechaEstimada;}publicStringgetNumeral(){returnnumeral;}publicvoidsetNumeral(Stringnumeral){this.numeral=numeral;}publicProcesoDeGestiongetSistema(){returnsistema;}publicvoidsetSistema(ProcesoDeGestionsistema){this.sistema=sistema;}publicintgetIdcapitulo(){returnidcapitulo;}publicvoidsetIdcapitulo(intidcapitulo){this.idcapitulo=idcapitulo;}@PrePersistprivatevoidpreGrabar(){Queryquery=XPersistence.getManager().createQuery("select max(c.idcapitulo) from Capitulos c ");IntegerlastNumber=(Integer)query.getSingleResult();this.idcapitulo=lastNumber==null?1:lastNumber+1;}
}
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
He probado en todos los ejemplos que tengo de @ElementCollection con @DescriptionsList y no he conseguido reproducirlo de ninguna manera. Sin embargo, he cogido tu código y lo he pegado en un proyecto nuevo, lo he probado y sí que falla. Así que hemos encontrado un bug. Añadelo y lo arregleramos los antes posible.
Ayuda a otros en este foro como yo te ayudo a ti.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Buenos días,
Trabajando ManyToOne estoy teniendo un comportamiento extraño en la aplicación que no había visto antes. Sucede de las iguiente forma:
Tengo una clase incrustable que hace referencia a otra clase llamada Capitulos
Uso la clase en una llamada Diagnostico, usando EllementCollection
Cuando estoy adicionando registros en el detalle, puedos seleccionar hasta dos registro, pero al usar el combo para adiconar el tercero, se bloquea y no se puede seleccionar. Lo curioso es que si le doy clic sobre el combo y luego TAB, se habilitan los botones para crear y editar la referencia (que estaban bloqueados con NoCreate y Nomodify). Si uso losbotones y luego cancelar, me deja agregar otros dos registros y así sucesivamente.
Esta muy raro este comprotamiento. Adjunto las clases para que alguien pueda ver si en verdad es un bug o algo hago mal.
Gracias.
Clase Diagnostico
package org.openxava.SistemasGestion.modelo;
import javax.persistence.;
import java.util.;
import org.openxava.annotations.;
import org.openxava.jpa.;
@Entity
@View(members=
"Auditoria [ sistema ;" +
"auditor, fechaCierre ]"+
"Observaciones {observaciones } ;" +
"Calificacion {calificacion } ")
@Table(name="diagnostico")
public class Diagnostico {
}
Clase DetalleDiagnostico
package org.openxava.SistemasGestion.modelo;
import javax.persistence.*;
import java.math.;
import org.openxava.annotations.;
@Embeddable
@Table(name="diagnosticocapitulo")
public class DetalleDiagnostico {
}
Clase capitulo
package org.openxava.SistemasGestion.modelo;
import java.math.;
import javax.persistence.;
import org.openxava.annotations.;
import org.openxava.jpa.;
import java.util.*;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Views({
@View(name="CapituloSimple", members = "numeral, descripcion")})
@View(members=
"sistema ; " +
"Capítulo [numeral, nombre; " +
"responsable, presupuesto, fechaEstimada ] ")
@Table(name="capitulos")
public class Capitulos {
}
Hola Gabriel:
He probado en todos los ejemplos que tengo de @ElementCollection con @DescriptionsList y no he conseguido reproducirlo de ninguna manera. Sin embargo, he cogido tu código y lo he pegado en un proyecto nuevo, lo he probado y sí que falla. Así que hemos encontrado un bug. Añadelo y lo arregleramos los antes posible.
Ayuda a otros en este foro como yo te ayudo a ti.
Hola,Javier.
Gracias por tu atención. Ya lo he creado.
710 Bug ElementCollectio OpenXava 5.6
Saludos.