최근 스프링 데이터 Jpa가 발견되었습니다. 내가 작동하게 만들 수 없었던 것은 Spring의 예외 계층 구조에 대한 적절한 예외 변환이었다.스프링 데이터 -jpa 및 예외 처리
에 따르면 <jpa:repositories />
은 @Repository로 주석 처리 된 스프링 빈에 대한 지속성 예외 변환을 활성화합니다. 이 게시물의 참조 문서는 spring-data-jpa 1.1.1을 가리 킵니다.
그러나 버전 1.3.0의 문서를 보면이 단락이 제거되었습니다. 또한 나는 가능한 한 어디서나 넣을 수 있지만 아무런 성공도하지 않고 @Repository
주석을 달고 있었다.
내 질문은 : 최근의 spring-data-jpa lib 버전 1.3.0을 사용하여 적절한 예외 번역을 달성 할 수 있습니까?
확인.
<?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="prjPersistenceUnit" transaction-type="RESOURCE_LOCAL">
<description>Persistence unit which uses EclipseLink JPA 2.0 implementation.</description>
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.mycompany.Setting</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-server" value="JBoss"/>
<property name="eclipselink.target-database" value="Oracle10g"/>
<property name="eclipselink.weaving" value="static"/>
</properties>
</persistence-unit>
</persistence>
내 rpository 여기
@Repository
public interface TestRepository extends JpaRepository<Setting, Long> {
Setting findByNamee(String name);
}
이 findByNamee 일부 봄 데이터베이스 예외 상승한다
... mpersistence.xml의
<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:pbase"/>
<property name="user" value="sa"/>
<property name="password" value="pass"/>
</bean>
<context:annotation-config/>
<bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="persistenceUnitName" value="prjPersistenceUnit"></property>
<property name="persistenceXmlLocation" value="classpath:META-INF/mpersistence.xml"></property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"
p:showSql="true"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="myEmf"/>
</bean>
<tx:annotation-driven/>
<jpa:repositories base-package="com.mycompany.repository" />
내용 : 나는 여기에 몇 가지 설정을 넣어 것입니다 databese에있는 부동산은 이름이 아닙니다. @Repository
주석 모든 것을 일반 다오 객체를 구성 할 때 예상대로하지만 항상
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
비록를 얻을 작동합니다.
eclipseLink 2.3.2를 사용하여 Tomcat 6.0에 배치하려고합니다. 예외 번역기는 방언에 있기 때문에
많은 도움이되지는 않지만 확실히 가능합니다. 내 프로젝트에서 버전 1.3.0을 사용하고 예외 번역이 내 저장소에서 작동한다고 주장하는 테스트가 있습니다. ''이면 충분합니다. 'JpaRepositoryConfigExtension'은'@ Repository'로 주석 처리 된 bean을 찾는 bean post processor ('PersistenceExceptionTranslationPostProcessor')를 등록합니다. –
zagyi
아무도 내가 놓친 부분을 지적 할 수 있습니까? – user1278890