Je travaille actuellement sur JBoss 7.1.1 avec JPA (avec Hibernate) et Spring. J'ai @Transactional
de printemps pour prendre soin des transactions. J'utilise actuellement le H2 database
interne de JBoss 7.1.1. Toutes les transactions fonctionnent correctement lorsque le serveur est en marche. Mais une fois mon serveur éteint, toutes les modifications apportées aux beans entité ne sont pas enregistrées dans les fichiers de la base de données H2 sur Redémarrer le serveur JBoss. Après l'arrêt du serveur JBoss, lorsque je me connecte à la base de données H2 à l'aide des fichiers, je vois que le schéma est créé mais les données ne sont pas sauvegardées.Hibernate n'enregistre pas les données dans H2 de JBoss 7.1.1
Je pense que ce n'est pas le problème avec mon code, mais une certaine configuration, car il fonctionne correctement lorsque l'application est en cours d'exécution.
Voici mon persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_2_0.xsd"
version="2.0">
<persistence-unit name="myappname" transaction-type="JTA">
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="jboss.entity.manager.factory.jndi.name" value="java:app/myappname"/>
</properties>
</persistence-unit>
</persistence>
DataSource à standalone.xml:
<datasource jta="true" jndi-name="java:/DefaultDS" pool-name="DefaultDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:file:${jboss.server.data.dir}${/}h2${/}localDB</connection-url>
<driver>h2</driver>
<pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
</pool>
<security>
<user-name>sa</user-name>
</security>
<timeout>
<idle-timeout-minutes>0</idle-timeout-minutes>
</timeout>
<statement>
<prepared-statement-cache-size>32</prepared-statement-cache-size>
</statement>
</datasource>
Comment puis-je obtenir ce travail?
Merci à l'avance
Je ne suis pas sûr, mais pourrait vous essayez d'utiliser l'application d'un chemin absolu, je pense que ce serait 'jdbc: h2: file:/$ {} jboss.server.data.dir/h2/localdb 'ou peut-être' jdbc: h2: fichier: $ {/} $ {jboss.server.data.dir} $ {/} h2 $ {/} localDB' (pas sûr si/pourquoi aurait-il besoin de $ {/} être utilisé au lieu de simplement '/'). –
@ThomasMueller Merci pour la réponse. J'ai oublié de vous mettre à jour. J'ai essayé ce que tu as suggéré. Cela ne semble pas fonctionner :-( – Chris
Je pense toujours que l'URL de la base de données est le problème.Je testerais avec une URL de base de données entièrement codée en dur, par exemple: 'jdbc: h2: fichier:/data/jboss/h2/localDB'. –