모든 값을 확인한 상태에서 모든 값을 확인한 상태에서 다음과 같은 JPA 코드가 있습니다 (ticket
은 유효한 bean을 포함하고 예외없이 끝납니다.). 실행되었지만 예외를 throw하지 않습니다. end 테이블에 데이터가 기록되지 않습니다.JPA가 테이블에 쓰지 않습니다.
또한 테이블에서 bean을 검색하려고 시도 했는데도 "작동"합니다 (빈 상태이므로 아무런 데이터도 반환되지 않습니다).
public String saveTicket() {
System.out.println("Controller saveTicket() ");
EntityManagerFactory factory = Persistence.createEntityManagerFactory("GesMan"); /* I know it would be better to share a single instance of factory, this is just for testing */
EntityManager entityMan = factory.createEntityManager();
entityMan.persist(this.ticket);
entityMan.close();
}
:
셋업은
보스 6.1 최종
의 SQLServer 2008 익스프레스 (MS에서 드라이버 SQL JDBC 3)
지속성 코드
퍼시스턴스 유닛 그렇지 않으면 모든 변경에 가까운 대기 버릴 것이다
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.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_2_0.xsd">
<persistence-unit name="GesMan" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/GesManDS</jta-data-source>
<class>es.caib.gesma.gesman.Ticket</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
데이터 소스
<datasources>
<local-tx-datasource>
<jndi-name>GesManDS</jndi-name>
<connection-url>jdbc:sqlserver://spsigeswnt14.caib.es:1433;DatabaseName=TEST_GESMAN</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<user-name>thisis</user-name>
<password>notthepassword</password>
<check-valid-connection-sql>SELECT * FROM dbo.Ticket</check-valid-connection-sql>
<metadata>
<type-mapping>MS SQLSERVER</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
플러시는 트랜잭션 내부 될 필요가 있다고 말해 예외를 발생 알려주세요 ; 수동으로 트랜잭션을 시작할 수 없었습니다 (EJB를 설정하고 컨테이너가 작동하도록해야했습니다). – SJuan76
어떻게 트랜잭션 관리를 구성 했습니까? 그것은 컨테이너 관리 또는 빈 관리입니까? – kyiu