Я пытаюсь написать тестовые примеры junit для пакетного приложения Java Spring, слоя DAO. Когда я настраиваю объект уровня данных с помощью генератора пользовательских последовательностей и запускаю тестовый пример, я получаю приведенное ниже исключение.Ошибка: платформа DatabasePlatform не поддерживает NativeSequence
Исключение Описание: SEQ_EMPLOYEE_ID: платформа DatabasePlatform не поддерживает NativeSequence.
Для сохранения данных Я использую JPA + EclipseLink.
Ниже перечислены файлы конфигурации, которые я использую для Junit.
DO класса
@Entity
@Table(name = "EMPLOYEE")
@NamedQuery(name = "test.test",
query = "SELECT d FROM EmployeeDO d where d.status = 'COMPLETED'")
public class EmployeeDO implements Serializable {
private static final long serialVersionUID = 1L;
@SequenceGenerator(name = "employeeIdSequence", allocationSize = 1,
sequenceName = "SEQ_EMPLOYEE_ID")
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employeeIdSequence")
@Column(name = "BATCH_ID")
private long batchId;
}
JunitPersistence.xml
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_1_0.xsd" version="1.0">
<persistence-unit name="eclipseLinkPunitEmployee" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>org.batch.model.data.EmployeeDO</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:dataSource"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="eclipselink.ddl-generation" value="create-tables"/>
<property name="eclipselink.id-validation" value="NULL"/>
</properties>
</persistence-unit>
</persistence>
Test Контекст XML
<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="eclipseLinkPunitEmployee" />
<property name='dataSource' ref='junitDatasource' />
<property name="persistenceXmlLocation" value="classpath:JunitPersistence.xml" />
<property name="jpaPropertyMap">
<map>
<entry key="eclipselink.weaving" value="false" />
</map>
</property>
</bean>
<jdbc:embedded-database id="junitDatasource" type="HSQL">
<jdbc:script location="classpath:sequences.sql"/>
</jdbc:embedded-database>
sequences.sql
CREATE SEQUENCE SEQ_EMPLOYEE_ID START WITH 1 increment by 1;
CREATE TABLE DUAL (DUMMY DECIMAL);
INSERT INTO DUAL VALUES(1);
SET DATABASE SQL SYNTAX ORA TRUE;
Добавлен <свойство name = "eclipselink.target-database" value = "Oracle" /> в сохранении XML. Он работает !! Благодаря.. – user1940878