Возможно, это недостаток знаний, но я не могу определить, какую базу данных использует мое приложение. Источники данных и драйверы в моей standalone.xml из JBoss AS выглядеть следующим образом:Невозможно обнаружить базу данных, используемую JPA с JBoss
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jta="true" jndi-name="java:/MySqlDS" pool-name="MySqlDS_Pool" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:mysql://localhost:3306/studadmin</connection-url>
<driver>com.mysql</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
<timeout>
<idle-timeout-minutes>0</idle-timeout-minutes>
<query-timeout>600</query-timeout>
</timeout>
<statement>
<prepared-statement-cache-size>100</prepared-statement-cache-size>
<share-prepared-statements>true</share-prepared-statements>
</statement>
</datasource>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<drivers>
<driver name="com.mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
И это мой persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
\t xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
\t xsi:schemaLocation="
\t http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
\t
\t <persistence-unit name="primary">
\t \t <jta-data-source>java:jboss/datasources/studadminDS</jta-data-source>
\t \t <properties>
\t \t \t <property name="hibernate.hbm2ddl.auto" value="update" />
\t \t \t <property name="hibernate.show_sql" value="true" />
\t \t </properties>
\t </persistence-unit>
\t
</persistence>
Я просто используя этот метод для чтения из базы данных:
@PostConstruct
public void init() {
students = new ListDataModel<Student>();
students.setWrappedData(em.createNamedQuery("SelectStudents")
.getResultList());
}
И это один упорствовать студента в базе данных:
public String saveStudent() {
try {
utx.begin();
} catch (NotSupportedException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
student = em.merge(student);
em.persist(student);
students.setWrappedData(em.createNamedQuery("SelectStudents")
.getResultList());
try {
utx.commit();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (RollbackException e) {
e.printStackTrace();
} catch (HeuristicMixedException e) {
e.printStackTrace();
} catch (HeuristicRollbackException e) {
e.printStackTrace();
} catch (SystemException e) {
e.printStackTrace();
}
return "studentList";
}
После того как я сохранить несколько новых студентов в моем базы данных, используя соответствующий символ, они перечислены успешно. Но проблема в том, что, когда я ищу в своей базе данных MySQL, новых записей нет, хотя данные где-то сохраняются, потому что, если я развертываю свое приложение, данные все еще доступны.
Знаете ли вы, какая база данных использует мое приложение или ее можно обнаружить?
вы уверены, что ваши сделки совершил? –
Я думаю, что, поскольку данные доступны, после того, как я перераспределяю свое приложение. – John