Menu

Leer tabla Oxusers

2025-11-13
2025-11-14
  • Juan Pelaez Boismorand

    Quería leer la tabla Oxusers para acceder a los usuarios registrados pero no me deja ....

    @OneToMany (mappedBy="departamento",
    cascade=CascadeType.REMOVE)
    private Collection<oxusers> oxusers ;</oxusers>

    ¿ Se puede hacer esto ? ....

    Gracias
    
     
  • gregorio

    gregorio - 2025-11-13

    Hola Juan.
    Tomando en cuenta tu ejemplo:

    Indicas que agregaste una referencia Departamento a la clase User cuya tabla es oxusers.
    Yo no tocaría las clases por defecto de OXP.
    

    Tomando en cuenta tu consulta:
    Lo puedes hacer de la forma:

    Collection<User> oxUsers =   XPersistence.getManager().createQuery("Select o from User o").getResultList();
            for (Iterator iterator = oxUsers.iterator(); iterator.hasNext();) {
                User user = (User) iterator.next();
                System.out.println(user.getName());
            }
    

    Atte.

     
  • Juan Pelaez Boismorand

    Gracias Gregorio por tu respuesta, la verdad es que lo he explicado FATAL .... La entidad completa es esta :

    public class Departamento {

    @Id
    @Column(length=7)
    @DefaultValueCalculator(value=CalculadorSiguienteNumeroDepartamento.class)   @ReadOnly
    private int numero;
    
    @Column(length = 80)
    private String descripcion;
    
     @OneToMany (mappedBy="departamento",
     cascade=CascadeType.REMOVE)
     private Collection<Usuario> usuario ;
    
    
    // -----------------------------------------------------
        public static Departamento find(int vis) {return XPersistence.getManager().find(Departamento.class, vis);  }
    // -----------------------------------------------------
    

    }

    Lo que querí es que los usuarios (tabla "usuario") fueran los que están grabados en la entidad OxUsers ..... Igual debo traspasarlos previamente cada vez que se entre en la entidad "Departamento" a grabar .....

    Gracias

     
  • gregorio

    gregorio - 2025-11-13

    Hola Juan:
    Reitero: no tocaria nada de lo que OX trae por defecto, menos todavia la parte de seguridad.
    Yo lo haría de la forma:

    @View(members = "nombre,usuarios")
    @Setter
    @Getter
    @Entity
    public class ClaseDepartamento extends Identifiable {
    
        private String nombre;
    
        @ListProperties("descripcion,user.name")
        @OneToMany(mappedBy = "departamento")
        private Collection<ClaseUsuario> usuarios;
    }
    
    @View(members = "descripcion;user")
    @Setter
    @Getter
    @Entity
    public class ClaseUsuario extends Identifiable {
    
        private String descripcion;
    
        @ManyToOne
        @DescriptionsList
        private User user;
    
        @ManyToOne
        private ClaseDepartamento departamento;
    
    }
    
    Collection<ClaseUsuario> usuarios =   XPersistence.getManager().createQuery("Select o from ClaseUsuario o").getResultList();
             for (Iterator iterator = usuarios.iterator(); iterator.hasNext();) {
                ClaseUsuario claseUsuario = (ClaseUsuario) iterator.next();
    
                System.out.println(claseUsuario.getUser().getName());
    
            }
    
     
  • Juan Pelaez Boismorand

     

    Last edit: Juan Pelaez Boismorand 2025-11-14
  • Juan Pelaez Boismorand

    Gracias a los buenos conocimientos y la paciencia de GREGORIO pongo aquí la solución por si a alguien le pueda servir :

    @View(members = "nombre,usuarios")
    @Setter
    @Getter
    @Entity
    public class ClaseDepartamento extends Identifiable {

    private String nombre;
    
    @ListProperties("descripcion,user.name")
    @OneToMany(mappedBy = "departamento")
    private Collection<ClaseUsuario> usuarios;
    

    }

    @View(members = "descripcion;user")
    @Setter
    @Getter
    @Entity
    public class ClaseUsuario extends Identifiable {

    private String descripcion;
    
    
    @ManyToOne
    @DescriptionsList
    private User user;
    
    @ManyToOne
    private ClaseDepartamento departamento;
    

    }

     

Log in to post a comment.