De entrada, con claves compuesta, OX funciona perfectamente. Pero esta es la forma en que lo hacemos:
Las clases referidas en IdClass, también tienen las mismas anotaciones que las clases. Me extraña que JPA (Hibernate) no te disparara una excepción por no tener definida los id en una entidad (ValorDominio).
En cascade CascadeType.REMOVE es el que usamos.
Espero te sea útil,
Federico
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Aplique la sugerencia que me diste con el CascadeType.REMOVE pero no hubo cambio alguno, he buscado en el libro de openxava que tengo a disposición pero no hay solución alguna a este comportamiento.
Saludos Federico:
Me preguntaba puedes hacer el favor de aclararme la respuesta, y decirme a la vez como deberían quedar entonces las entidades corregidas.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
te falla porque las claves de ValorDominio están visualizadas en la vista. Si el usuario cambia esos valores, al grabar se está creando un nuevo registro. Clave diferente, objeto diferente. Mi consejo es que uses una clave oculta autogenerada, o bien no permitas que el usuario modifique la clave.
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:
Hola!!!
Tengo una entidad con llave compuesta y que cuando trato de editar un elemento de una colección en esa entidad, no la actualiza sino que la agrega.
Gracias Por La Atención Prestada
Hola Larry,
la combinación de llaves compuestas y colecciones funciona perfectamente con
OpenXava. El problema tiene que estar en otra parte.
Pon aquí el código completo de tu entidad principal y la entidad de la colección para que te pueda dar alguna pista.
Ayuda a otros en este foro como yo te ayudo a ti.
Anexo las entidades relacionadas
--------------- Entidad principal ---------------
package net.grupobit.fenix.model;
import java.util.*;
import javax.persistence.*;
import net.grupobit.fenix.validators.*;
import org.openxava.annotations.*;
@Entity
@Tab(properties="nombre, tipo.nombre", defaultOrder="${codigo} asc")
@View(members="nombre, tipo; coleccionValoresDominio{valoresDominio};")
@Table(name="domain")
public class Dominio {
}
--------------- Entidad de la colección ---------------
package net.grupobit.fenix.model;
import javax.persistence.;
import org.openxava.annotations.;
@Entity
@Tab(properties="dominio.codigo, valor", defaultOrder="${dominio.codigo} asc")
@View(members="#dominio; valor")
@Table(name="domainvalues")
@IdClass(ValorDominioKey.class)
public class ValorDominio {
}
--------------- Clase key ValorDominioKey ---------------
package net.grupobit.fenix.model;
import javax.persistence.*;
public class ValorDominioKey implements java.io.Serializable {
}
Gracias Por La Atención Prestada!!
Saludos Larry:
De entrada, con claves compuesta, OX funciona perfectamente. Pero esta es la forma en que lo hacemos:
Espero te sea útil,
Federico
Hola!!!
Aplique la sugerencia que me diste con el CascadeType.REMOVE pero no hubo cambio alguno, he buscado en el libro de openxava que tengo a disposición pero no hay solución alguna a este comportamiento.
Saludos Federico:
Me preguntaba puedes hacer el favor de aclararme la respuesta, y decirme a la vez como deberían quedar entonces las entidades corregidas.
Hola Larry,
te falla porque las claves de ValorDominio están visualizadas en la vista. Si el usuario cambia esos valores, al grabar se está creando un nuevo registro. Clave diferente, objeto diferente. Mi consejo es que uses una clave oculta autogenerada, o bien no permitas que el usuario modifique la clave.
Ayuda a otros en este foro como yo te ayudo a ti.