Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con Persistence.xml en Toplink

Estas en el tema de Problemas con Persistence.xml en Toplink en el foro de Java en Foros del Web. Buenas gente!. Les planteo mi duda que me está matando: Estoy desarrollando una aplicación web con Glassfish - Toplink (persistencia) en plataforma Netbeans 6.1 Beta. ...
  #1 (permalink)  
Antiguo 09/04/2008, 11:55
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Problemas con Persistence.xml en Toplink

Buenas gente!.

Les planteo mi duda que me está matando:

Estoy desarrollando una aplicación web con Glassfish - Toplink (persistencia) en plataforma Netbeans 6.1 Beta.
Por ahora todo bien pero resulta ser que tuve serios incovenientes con el archivito "persistence.xml" al momento de generar la unidad de persistencia. Aquí van las dudas:

1) La primera vez el archivo lo había generado con las opciones JTA marcado enlazado con la BaseDatos llamada "baseprueba" quedó así:

Código:
persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
- <persistence-unit name="SharePU" transaction-type="JTA">
  <jta-data-source>baseprueba</jta-data-source> 
  <properties /> 
  </persistence-unit>
  </persistence>
Luego funcionaba perfecto al momento de utilizarlo en las clases del modelo. El incoveninete se presentaba al usar el comando de la librería JPA "em.merge(usuario)" El cuál en teoría modifica los datos de una entidad (en este caso usuario es la marcada como @entity la que mantiene su relación con la tabla "usuario" de la Base de Datos), el comando realizaba lo suyo, modifica cambios en la Base de Datos pero en la aplicación web (que está obviamente en ejecución) no sucede lo mismo, por más que reinicie sesión etc. La única forma era ejecutar nuevamente aplicación web desde Net Beans....
SOLUCIÓN???? NO conseguí absolutamente nada para esto... (Lo sorprendete es que nosucede lo mismo con el em.delete o em.persist... etc).

2) Como "solución parcial" decidimos cambiar el persistence.xml creando una unidad que no utilice JTA, quedando así (recordar que uso TOPLINK):

Código:
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="SharePU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <non-jta-data-source>baseprueba</non-jta-data-source>
    <class>model.persistence.entity.Usuario</class>

    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
      <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/baseprueba"/>
      <property name="toplink.jdbc.user" value="root"/>
      <property name="toplink.jdbc.password" value="patitofeo124"/>
    </properties>
  </persistence-unit>
</persistence>
En donde mantengo mi conexión con la BD, a través de Toplink, definiendo en <class> las clases marcadas como @entity que mantienen su relación con las tablas de la BD.
El incoveninte de esto (GRANDE por cierto), es que al ejecutar aplicación web, puedo realizar operaciones, efectivamente se soluciona el tema de em.merge(usuario) modifica como debe, en fin se puede hacer todo. Pero si yo modifico algo en el programa (o no) y vuelvo a relanzarlo, ejecutarlo desde el Netbeans 6.1 se "corrompe" o algo por el estilo porque deja de funcionar como funcionaba arrojando siguietne excepción:

model.persistence.entity.Usuario cannot be cast to model.persistence.entity.Usuario

Un error a mi entender, totalmente sin sentido... Para colmo a veces me lo da y otras veces no (al volver a lanzar la aplicación web desde Netbeans). La solución que le estoy dando es hacer un "clean & build" cada vez que hago algún cambio en el source code, pero esto me obliga a cerrar el glassfish, vovler a ejecutar todo y es una pérdida de tiempo terrible... ESTE ERROR no me lo daba con el otro persistence... Pero bueno, necesito modificar.

Muchisimas gracias por su valioso tiempo, soy todo oídos ante las propuestas..

Muchas gracias y bendito sea este foro que tanto ha ayudado.

Saludos,
wasaaa.
  #2 (permalink)  
Antiguo 13/05/2008, 15:45
 
Fecha de Ingreso: mayo-2008
Mensajes: 1
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: Problemas con Persistence.xml en Toplink

Hola
Yo tengo un problema parecido pero distinto. Conseguí hacer una librería para acceder y actualizar mediante JPA sobre JavaSE, conNB 6.1 y Toplink.

Como quería dejar eso como un servicio, intenté primero ponerlo como un servicio web, pero tenía algún problema, así que decidí crear un ejb stateless. La diferencia es que en vez de conectarse con usuario y password se conecta mediante un jta-data-source. El caso es que no consigo que se cree el entityManagerFactory. Dice que no existe el persistence unit. He probado a injectar el emf, el em, a crearlo directamente y siempre me da el mismo error.

En un foro de java.net decían que el persistence.xml debería estar en el classpath, así que he añadido esa carpeta META-INF para que empaquete en el war los ficheros de persistencia y esquema, pero no consigo que se conecte.

Saludos y gracias
  #3 (permalink)  
Antiguo 29/11/2010, 12:15
 
Fecha de Ingreso: noviembre-2010
Mensajes: 29
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Respuesta: Problemas con Persistence.xml en Toplink

Me pasa un problema muy extraño, estoy desarrollando en JDeveloper un sistema y hago una conexion mediante JPA a una Base de Datos la cual recien acabo de definir, y solo introduje un registro en una de las tablas para hacer la prueba, el problema es que al hace la consulta desde mi cliente [SQL Developer] si aparece este registro, de echo ya intente desde un editor de SQL dentro del mismo JDeveloper y si aparece este registro, pero al momento de hacer la consulta desde JPA me aparecia vacio, se me ocurrio que quisas si insertaba esta fila via JPA era mas probable que me apareciera en la consulta, y de echo asi fue, inserte e inmediatamente consulte y me aparece el registro claramente, aunque tengo otro problema, al volver a ejecutar el sistema de prueba, ya sin el insert [persist], es decir, solamente la consulta, no me aparece.

Esto quiere decir que el registro solo me aparece cuando lo inserto en una misma corrida :S, alguien me podria ayudar con estos problemas extraños y misticos??

en caso de que encuentres en que me estoy equivocando me agradaria y me agregaras by msn: [email protected]

page: http://javahelp.freeiz.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:44.