Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2008, 11:55
wasaaa_88
 
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.