ขณะนี้ฉันกำลังทำงานกับ JBoss 7.1.1 กับ JPA (พร้อม Hibernate) และ Spring ฉันมี @Transactional
ของสปริงเพื่อดูแลธุรกรรม ขณะนี้ฉันกำลังใช้ H2 database
ภายในของ JBoss 7.1.1 ธุรกรรมทั้งหมดทำงานได้ดีเมื่อเซิร์ฟเวอร์ทำงาน แต่เมื่อฉันปิดเซิร์ฟเวอร์ การเปลี่ยนแปลงทั้งหมดที่ทำกับเอนทิตี bean จะไม่ถูกบันทึกในไฟล์ฐานข้อมูล H2 บน รีสตาร์ทเซิร์ฟเวอร์ JBoss หลังจากที่เซิร์ฟเวอร์ JBoss ปิดตัวลง เมื่อฉันเชื่อมต่อกับฐานข้อมูล H2 โดยใช้ไฟล์ ฉันเห็นว่าสคีมาถูกสร้างขึ้น แต่ข้อมูลไม่ได้รับการบันทึก
ฉันรู้สึกว่านี่ไม่ใช่ปัญหากับโค้ดของฉัน แต่เป็นการกำหนดค่าบางอย่าง เนื่องจากทำงานได้ดีเมื่อแอปพลิเคชันทำงาน
นี่คือ Peristence.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>
แหล่งข้อมูลใน 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>
ฉันจะทำให้สิ่งนี้ทำงานได้อย่างไร?
ขอบคุณล่วงหน้า
jdbc:h2:file:/${jboss.server.data.dir}/h2/localDB
หรืออาจจะเป็นjdbc:h2:file:${/}${jboss.server.data.dir}${/}h2${/}localDB
(ไม่แน่ใจว่า / เพราะเหตุใด${/}
จึงจำเป็นต้องใช้แทนเพียงแค่/
) - person Thomas Mueller   schedule 18.09.2012jdbc:h2:file:/data/jboss/h2/localDB
- person Thomas Mueller   schedule 18.09.2012