En la documentación de OpenXava se menciona que todas las clases deben ir dentro del paquete "model" o "modelo". Sin embargo, si una aplicación crece en número de clases (aprox. 100 clases) se vuelve difícil su control si todo está en un sólo lugar. ¿Existe alguna forma de crear otros paquetes dentro del modelo, para agrupar clases relacionadas en OpenXava? Por ejemplo, tener un paquete org.openxava.aplicacion1.model.subpaquete1 y otro org.openxava.aplicacion1.model.subpaquete2?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
desde OpenXava 4m6 puedes poner las entidades en el paquete que te plazca, ni siquiera han de estar dentro de model o modelo. Dígamos que ahora poner las entidades dentro de modelo es una cuestión de estilo y no un requerimiento técnico de OX. Así que puedes hacer los subpaquetes que quieras sin problemas.
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /xava/module.jsp en línea 66
63: manager.setSession(session);
64: manager.setApplicationName(request.getParameter("application"));
65:
66: manager.setModuleName(module); // In order to show the correct description in head
67:
68: if (manager.isFormUpload()) {
69: new Module().requestMultipart(request, response, app, module);
causa raíz
org.openxava.util.XavaException: Parece ser que ahorro no es una entidad EJB3 ni una clase transitoria del modelo
Sin embargo cuando la clase, la creo a nivel del paquete "model", funciona correctamente
esta es mi clase:
package org.openxava.octopussource.model.ahorro;
import java.io.;
import javax.persistence.;
import org.openxava.annotations.*;
@Entity
public class Ahorronew implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "idAhorro", nullable = false)
@GeneratedValue(strategy=GenerationType.IDENTITY) @Hidden
private int idahorro;
@Column(name = "Descripcion", length=50)
@Required
private String descripcion;
@Hidden
@Column(name = "EstadoRegistro", nullable = true)
private boolean estadoregistro;
public int getIdahorro() {
return idahorro;
}
public void setIdahorro(int idahorro) {
this.idahorro = idahorro;
}
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public boolean isEstadoregistro() {
return estadoregistro;
}
public void setEstadoregistro(boolean estadoregistro) {
this.estadoregistro = estadoregistro;
}
}
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Es decir, con el nombre de la entidad sin el paquete. De hecho, en este caso Ahorro no es el nombre de la entidad sino del modulo (los modulos se definen en aplicacion.xml), lo ocurre es que OX genera un módulo por defecto por cada entidad JPA, para evitar que tengas que escribir XML innecesario en aplicacion.xml
Eso es enteramente valido. Aún más, en eclipse, puedes crear multiples carpetas de fuentes, de manera que podrías tener org.openxava.application1.model como paquete pero en diferentes carpetas de fuentes.
Una nota importante, las entidades transient deben estar en paquetes que contengan al menos una entidad concreta, de lo contrario, no son reconocidas por OX.
En nuestro proyecto tenemos cerca de 25 carpetas de fuentes y sólo en .model y sub paquetes de model cerca de 350 entidades, y aparentan estar bien organizadas. Las ventajas que vemos con multiples carpetas es que cada carpeta representa un area de desarrollo especifico que puede ser asignado a un desarrollador, esto nos evita los tipicos conflictos entre equipos de desarrollo.
Espero te sea util,
Federico
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Gracias, Javier y Federico. Acabo de reorganizar todas las clases de mi aplicación y todo funciona sin problemas, además de verse mucho más ordenadas :D
Saludos,
Ernesto
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hola:
En la documentación de OpenXava se menciona que todas las clases deben ir dentro del paquete "model" o "modelo". Sin embargo, si una aplicación crece en número de clases (aprox. 100 clases) se vuelve difícil su control si todo está en un sólo lugar. ¿Existe alguna forma de crear otros paquetes dentro del modelo, para agrupar clases relacionadas en OpenXava? Por ejemplo, tener un paquete org.openxava.aplicacion1.model.subpaquete1 y otro org.openxava.aplicacion1.model.subpaquete2?
Hola Ernesto,
desde OpenXava 4m6 puedes poner las entidades en el paquete que te plazca, ni siquiera han de estar dentro de model o modelo. Dígamos que ahora poner las entidades dentro de modelo es una cuestión de estilo y no un requerimiento técnico de OX. Así que puedes hacer los subpaquetes que quieras sin problemas.
¿Quieres una respuesta mejor?: Prueba el soporte profesional de OpenXava
Hola Javier:
soy nuevo en OX y he organizado mi paquete así:
org.openxava.octopussource.model.ahorro
y creo la clase Ahorro.java
http://localhost:8888/OctopusSource/modules/ahorro/Ahorro
Arroja el Siguiente Error:
org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /xava/module.jsp en línea 66
63: manager.setSession(session);
64: manager.setApplicationName(request.getParameter("application"));
65:
66: manager.setModuleName(module); // In order to show the correct description in head
67:
68: if (manager.isFormUpload()) {
69: new Module().requestMultipart(request, response, app, module);
causa raíz
org.openxava.util.XavaException: Parece ser que ahorro no es una entidad EJB3 ni una clase transitoria del modelo
Sin embargo cuando la clase, la creo a nivel del paquete "model", funciona correctamente
esta es mi clase:
package org.openxava.octopussource.model.ahorro;
import java.io.;
import javax.persistence.;
import org.openxava.annotations.*;
@Entity
public class Ahorronew implements Serializable {
private static final long serialVersionUID = 1L;
}
Hola José,
el problema está en la URL. Deberías usar esta URL:
Es decir, con el nombre de la entidad sin el paquete. De hecho, en este caso Ahorro no es el nombre de la entidad sino del modulo (los modulos se definen en aplicacion.xml), lo ocurre es que OX genera un módulo por defecto por cada entidad JPA, para evitar que tengas que escribir XML innecesario en aplicacion.xml
Ayuda a otros en este foro como yo te ayudo a ti.
¿Necesitas más ayuda? Usa el soporte profesional de OpenXava
Saludos Ernesto:
Eso es enteramente valido. Aún más, en eclipse, puedes crear multiples carpetas de fuentes, de manera que podrías tener org.openxava.application1.model como paquete pero en diferentes carpetas de fuentes.
Una nota importante, las entidades transient deben estar en paquetes que contengan al menos una entidad concreta, de lo contrario, no son reconocidas por OX.
En nuestro proyecto tenemos cerca de 25 carpetas de fuentes y sólo en .model y sub paquetes de model cerca de 350 entidades, y aparentan estar bien organizadas. Las ventajas que vemos con multiples carpetas es que cada carpeta representa un area de desarrollo especifico que puede ser asignado a un desarrollador, esto nos evita los tipicos conflictos entre equipos de desarrollo.
Espero te sea util,
Federico
Gracias, Javier y Federico. Acabo de reorganizar todas las clases de mi aplicación y todo funciona sin problemas, además de verse mucho más ordenadas :D
Saludos,
Ernesto