Me sucede que cuando pongo una propiedad en una relación manytoone, las acciones solo me aparecen si uso @DescriptionsList. De lo contrario me aparecen como campos de solo lectura. Adjunto imágen con dos propiedades (unidad y carrera) una con @DescriptionsList y otra sin. https://www.dropbox.com/s/a0nxp7qggbaod9v/Captura.JPG?dl=0
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Unidad es de solo lectura o forma parte de la clave primaria, o si estás usando XavaPro las añadido como solo lectura para ese rol, o algo así. Por defecto, las referncias con marco también tiene las acciones para añadir o modificar.
¿Tienes alguna acción personalizada para buscar o nuevo? Si es así pon aquí su código.
Pon aquí el código de la entidad, para que te podamos dar alguna pista.
---------- 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:
Este es el código de las entidades. En este caso hay una cadena de herencia entre "persona" o "alumno", de todas maneras es indiferente si uso una u otra clase, el error es el mismo. Aquí las tres clases:
import javax.persistence.*;
import org.openxava.annotations.*;
@View(members="id, nroEntrevista;" +
"Datos del Becario {alumno}" +
"Datos Familiares {residencia;}" +
"Datos Laborales {}" +
"Sobre el PEUN {}" +
"Trayectoria Educativa {}" +
"Ingreso {}"+
"Carrera {}"+
"Información Cualitativa {}")
@Entity
public class Encuesta {
public int getNroEntrevista() {
return nroEntrevista;
}
public void setNroEntrevista(int nroEntrevista) {
this.nroEntrevista = nroEntrevista;
}
@Column(name = "ID", nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@ReadOnly
private int id;
@ManyToOne(optional=false, fetch=FetchType.LAZY)
private Alumno alumno;
@Column(name = "Numero de Entrevista")
private int nroEntrevista;
@Column(name = "Lugar de residencia")
private String residencia;
public String getResidencia() {
return residencia;
}
public void setResidencia(String residencia) {
this.residencia = residencia;
}
public Alumno getAlumno() {
return alumno;
}
public void setAlumno(Alumno alumno) {
this.alumno = alumno;
}
public void setId(int aValue) {
id = aValue;
}
public int getId() {
return id;
}
public class Alumno extends Persona {
@ManyToOne( // La referencia se almacena como una relación en la base de datos
fetch=FetchType.LAZY, // La referencia se carga bajo demanda
optional=true) // La referencia puede estar sin valor
@DescriptionsList // Así la referencia se visualiza usando un combo
private UnidadAcademica unidad;
@ManyToOne( // La referencia se almacena como una relación en la base de datos
fetch=FetchType.LAZY, // La referencia se carga bajo demanda
optional=true) // La referencia puede estar sin valor
@DescriptionsList // Así la referencia se visualiza usando un combo
private Carrera carrera;
public String getLugarNacimiento() {
return lugarNacimiento;
}
public void setLugarNacimiento(String lugarNacimiento) {
this.lugarNacimiento = lugarNacimiento;
}
@ManyToOne(fetch=FetchType.LAZY)
@DescriptionsList
private CondicionBeca condicion;
@ManyToOne(fetch=FetchType.LAZY)
@DescriptionsList
private TipoBeca tipoBeca;
private String lugarNacimiento;
public CondicionBeca getCondicion() {
return condicion;
}
public void setCondicion(CondicionBeca condicion) {
this.condicion = condicion;
}
public TipoBeca getTipoBeca() {
return tipoBeca;
}
public void setTipoBeca(TipoBeca tipoBeca) {
this.tipoBeca = tipoBeca;
}
@OneToMany
@Collapsed
private Collection<Encuesta> encuestas;
public Collection<Encuesta> getEncuestas() {
return encuestas;
}
public void setEncuestas(Collection<Encuesta> encuestas) {
this.encuestas = encuestas;
}
public UnidadAcademica getUnidad() {
return unidad;
}
public void setUnidad(UnidadAcademica unidad) {
this.unidad = unidad;
}
public Carrera getCarrera() {
return carrera;
}
public void setCarrera(Carrera carrera) {
this.carrera = carrera;
}
}
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
El ejemplo de la imagen adjuntada lo hice con la clase Alumno y unidad academica, que funcionaba bien y le borre el @descriptionList para que se viera el problema. El error lo detecté en mi clase Encuesta, cuando lo puse en relación con la clase alumno!. Es decir que me pasa en todas las relaciones ManyToOne. Adjunto por las dudas la clase UnidadAcademica. Cabe aclarar que se hace readonly y desaparecen las acciones solo si saco el @descriptionList, sino funciona correctamente.
package org.openxava.peun.modelo;
import javax.persistence.*;
import org.openxava.annotations.*;
@Entity
public class UnidadAcademica {
@Column(name = "ID", nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@ReadOnly
private int id;
@Required
private String nombre;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
Last edit: Marcos 2017-04-02
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ahí funciono. No había comprendido que la clave primaria no podía ser read ony cuando uso la clase como atributo. De todas maneras, y claramente estaba equivocado, estaba completamente convencido de que ya había probado esto. Mil disculpas y gracias!!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Me sucede que cuando pongo una propiedad en una relación manytoone, las acciones solo me aparecen si uso @DescriptionsList. De lo contrario me aparecen como campos de solo lectura. Adjunto imágen con dos propiedades (unidad y carrera) una con @DescriptionsList y otra sin.
https://www.dropbox.com/s/a0nxp7qggbaod9v/Captura.JPG?dl=0
Hola Marcos:
Unidad es de solo lectura o forma parte de la clave primaria, o si estás usando XavaPro las añadido como solo lectura para ese rol, o algo así. Por defecto, las referncias con marco también tiene las acciones para añadir o modificar.
¿Tienes alguna acción personalizada para buscar o nuevo? Si es así pon aquí su código.
Pon aquí el código de la entidad, para que te podamos dar alguna pista.
----------
Ayuda a otros en este foro como yo te ayudo a ti.
Este es el código de las entidades. En este caso hay una cadena de herencia entre "persona" o "alumno", de todas maneras es indiferente si uso una u otra clase, el error es el mismo. Aquí las tres clases:
import javax.persistence.*;
import org.openxava.annotations.*;
@View(members="id, nroEntrevista;" +
"Datos del Becario {alumno}" +
"Datos Familiares {residencia;}" +
"Datos Laborales {}" +
"Sobre el PEUN {}" +
"Trayectoria Educativa {}" +
"Ingreso {}"+
"Carrera {}"+
"Información Cualitativa {}")
@Entity
public class Encuesta {
}
package org.openxava.peun.modelo;
import javax.persistence.;
import org.openxava.annotations.;
@Entity
public class Persona {
}
package org.openxava.peun.modelo;
import java.util.*;
import javax.persistence.;
import org.openxava.annotations.;
@Entity
public class Alumno extends Persona {
@ManyToOne( // La referencia se almacena como una relación en la base de datos
fetch=FetchType.LAZY, // La referencia se carga bajo demanda
optional=true) // La referencia puede estar sin valor
@DescriptionsList // Así la referencia se visualiza usando un combo
private UnidadAcademica unidad;
@ManyToOne( // La referencia se almacena como una relación en la base de datos
fetch=FetchType.LAZY, // La referencia se carga bajo demanda
optional=true) // La referencia puede estar sin valor
@DescriptionsList // Así la referencia se visualiza usando un combo
private Carrera carrera;
}
El ejemplo de la imagen adjuntada lo hice con la clase Alumno y unidad academica, que funcionaba bien y le borre el @descriptionList para que se viera el problema. El error lo detecté en mi clase Encuesta, cuando lo puse en relación con la clase alumno!. Es decir que me pasa en todas las relaciones ManyToOne. Adjunto por las dudas la clase UnidadAcademica. Cabe aclarar que se hace readonly y desaparecen las acciones solo si saco el @descriptionList, sino funciona correctamente.
package org.openxava.peun.modelo;
import javax.persistence.*;
import org.openxava.annotations.*;
@Entity
public class UnidadAcademica {
}
Last edit: Marcos 2017-04-02
Hola Marcos:
Quítale el @ReadOnly al id de Persona.
----------
Ayuda a otros en este foro como yo te ayudo a ti.
Ahí funciono. No había comprendido que la clave primaria no podía ser read ony cuando uso la clase como atributo. De todas maneras, y claramente estaba equivocado, estaba completamente convencido de que ya había probado esto. Mil disculpas y gracias!!