JSP (Java Server Page) - AYUDA JPA

   
Vista:

AYUDA JPA

Publicado por Ricardo (1 intervención) el 09/07/2015 16:32:31
Estimados Amigos, agradeceria me pueda ayudar , primero detallo:

TENGO LO SIGUIENTE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package model.jpa;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
@Entity
public class Usuarios implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id_usuario;
    private String nombre;
    private String estado;
    @ManyToMany(mappedBy="usuarios")
    private List<Cuestionarios> cuestionarios=new ArrayList<Cuestionarios>();
    public List<Cuestionarios> getCuestionarios() {
        return cuestionarios;
    }
    public void setCuestionarios(List<Cuestionarios> cuestionarios) {
        this.cuestionarios = cuestionarios;
    }
    public Integer getId_usuario() {
        return id_usuario;
    }
    public void setId_usuario(Integer id_usuario) {
        this.id_usuario = id_usuario;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getEstado() {
        return estado;
    }
    public void setEstado(String estado) {
        this.estado = estado;
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package model.jpa;
 
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
@Entity
public class Cuestionarios implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id_cuestionario;
    private String nombre;
    private String estado;
    @OneToMany(mappedBy="cuestionarios")
    private List<Preguntas> preguntas=new ArrayList<Preguntas>();
    //ASOCIACION DE MUCHOS A MUCHOS ENTRE TABLA USUARIOS Y CUESTIONARIOS
    @ManyToMany
    @JoinTable(name="USUARIOS_CUESTIONARIOS",
            joinColumns=
                    @JoinColumn(name="id_cuestionario"),
            inverseJoinColumns=
                    @JoinColumn(name="id_usuario"))
    private List<Usuarios> usuarios=new ArrayList<Usuarios>();
 
    public List<Usuarios> getUsuarios() {
        return usuarios;
    }
 
    public void setUsuarios(List<Usuarios> usuarios) {
        this.usuarios = usuarios;
    }
    public List<Preguntas> getPreguntas() {
        return preguntas;
    }
    public void setPreguntas(List<Preguntas> preguntas) {
        this.preguntas = preguntas;
    }
    public Integer getId_cuestionario() {
        return id_cuestionario;
    }
    public void setId_cuestionario(Integer id_cuestionario) {
        this.id_cuestionario = id_cuestionario;
    }
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public String getEstado() {
        return estado;
    }
    public void setEstado(String estado) {
        this.estado = estado;
    }
}

El resultado de eso , al ejecutar la aplicación es la generación de 3 tablas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
mysql> describe usuarios;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| ID_USUARIO | int(11)      | NO   | PRI | NULL    |       |
| ESTADO     | varchar(255) | YES  |     | NULL    |       |
| NOMBRE     | varchar(255) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.03 sec)
 
mysql> describe cuestionarios;
+-----------------+--------------+------+-----+---------+-------+
| Field           | Type         | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+---------+-------+
| ID_CUESTIONARIO | int(11)      | NO   | PRI | NULL    |       |
| ESTADO          | varchar(255) | YES  |     | NULL    |       |
| NOMBRE          | varchar(255) | YES  |     | NULL    |       |
+-----------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
 
mysql> describe usuarios_cuestionarios;
+-----------------+---------+------+-----+---------+-------+
| Field           | Type    | Null | Key | Default | Extra |
+-----------------+---------+------+-----+---------+-------+
| id_cuestionario | int(11) | NO   | PRI | NULL    |       |
| id_usuario      | int(11) | NO   | PRI | NULL    |       |
+-----------------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)


Con esto todo bien, agregue los siguientes usuarios:

1
2
3
4
5
6
7
mysql> select * from usuarios;
+------------+--------+---------+
| ID_USUARIO | ESTADO | NOMBRE  |
+------------+--------+---------+
|          1 | ACTIVO | RICARDO |
|          2 | ACTIVO | PEDRO   |
|          3 | ACTIVO | ANDRES  |

Los siguientes cuestionarios:

1
2
3
4
5
6
7
8
9
mysql> select * from CUESTIONARIOS;
+-----------------+--------+--------------------------+
| ID_CUESTIONARIO | ESTADO | NOMBRE                   |
+-----------------+--------+--------------------------+
|               1 | ACTIVO | CUESTIONARIO MATEMATICAS |
|               2 | ACTIVO | CUESTIONARIO CASTELLANO  |
|               3 | ACTIVO | CUESTIONARIO INGLES      |
+-----------------+--------+--------------------------+
3 rows in set (0.00 sec)

Ahora necesito decir que ricardo y pedro hacen el cuestionario de matemáticas e ingles, teóricamente seria:

1
2
3
4
5
6
7
Tabla usuarios_cuestionarios
---------------------------------
id_usuario,id_cuestionario
1             ,1
1             ,3
2             ,1
2             ,3


Ahora lo que estoy tratando de hacer desde mi código Java para lograr esto es lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    EntityManagerFactory emf=Persistence.createEntityManagerFactory("JPA_EJB_FULLPU");
            EntityManager em=emf.createEntityManager();
            Usuarios u=new Usuarios();
            //BUSCO EL ID DEL USUARIO
            u=em.find(Usuarios.class,1);
            Cuestionarios c=new Cuestionarios();
            //BUSCO EL ID DEL CUESTIONARIO
            c=em.find(Cuestionarios.class,1);
            //ASOCIO EL CUESTIONARIO CON EL USUARIO
            c.getUsuarios().add(u);
            //ASOCIO EL USUARIO CON EL CUESTIONARIO
            u.getCuestionarios().add(c);
            em.getTransaction().begin();
            em.persist(u);
            em.persist(c);
            em.getTransaction().commit();
            em.close();


PERO ME DA ERROR!!!!... AGRADECERIA DE SU AYUDA.

Atento a sus comentarios.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder