2017-01-24 10 views
0

Я пытаюсь написать тестовые примеры 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; 

ответ

1

объекты нативной последовательности являются специфическими для используется база данных - вам необходимо указать правильную платформу базы данных, которая должна использоваться для собственных последовательностей работать. Вам нужно будет добавить свойство persistence target-database, чтобы указать базу данных, если она не была выбрана или установлена ​​Spring.

+0

Добавлен <свойство name = "eclipselink.target-database" value = "Oracle" /> в сохранении XML. Он работает !! Благодаря.. – user1940878

 Смежные вопросы

  • Нет связанных вопросов^_^