
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:
El resultado de eso , al ejecutar la aplicación es la generación de 3 tablas:
Con esto todo bien, agregue los siguientes usuarios:
Los siguientes cuestionarios:
Ahora necesito decir que ricardo y pedro hacen el cuestionario de matemáticas e ingles, teóricamente seria:
Ahora lo que estoy tratando de hacer desde mi código Java para lograr esto es lo siguiente:
PERO ME DA ERROR!!!!... AGRADECERIA DE SU AYUDA.
Atento a sus comentarios.
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


0