2016-07-12 1 views
0

J'ai créé un exemple de table avec une colonne d'identité dans Oracle.Colonne d'identité Oracle 12C avec EntityManager

CREATE TABLE "CORE_PROD"."BOOK" 
    ( "ID" NUMBER GENERATED BY DEFAULT AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOT NULL ENABLE, 
    "AUTHOR" VARCHAR2(255 BYTE), 
    "GENRE" VARCHAR2(255 BYTE), 
    "ISBN" VARCHAR2(255 BYTE), 
    "PUBLISHED" NUMBER NOT NULL ENABLE, 
    "TITLE" VARCHAR2(255 BYTE), 
    PRIMARY KEY ("ID") 
    USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS 
    TABLESPACE "MCA_DATA" ENABLE 
    ) SEGMENT CREATION DEFERRED 

    PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 
NOCOMPRESS LOGGING 
    TABLESPACE "PROD_DATA" ; 

J'ai créé le EntityManagerConfiguration en utilisant ci-dessous la configuration

@Bean 
    public DataSource dataSource() { 
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName(environment.getRequiredProperty("oracle.driver.class")); 
     dataSource.setUrl(environment.getRequiredProperty("oracle.connection.url")); 
     dataSource.setUsername(environment.getRequiredProperty("oracle.db.username")); 
     dataSource.setPassword(environment.getRequiredProperty("oracle.db.password")); 
     return dataSource; 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
     LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean(); 
     bean.setPackagesToScan(DomainPackage.class.getPackage().getName()); 
     bean.setDataSource(dataSource()); 
     bean.setJpaVendorAdapter(jpaVendorAdapter()); 
     bean.setJpaProperties(jpaProperties()); 
     return bean; 
    } 

    @Bean 
    public JpaVendorAdapter jpaVendorAdapter() { 
     HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter(); 
     jpaVendorAdapter.setShowSql(true); 
     jpaVendorAdapter.setGenerateDdl(true); 
     return jpaVendorAdapter; 
    } 

    @Bean 
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) { 
     JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(); 
     jpaTransactionManager.setEntityManagerFactory(emf); 
     return jpaTransactionManager; 
    } 

    @Bean 
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { 
     return new PersistenceExceptionTranslationPostProcessor(); 
    } 


    private Properties jpaProperties() { 
     Properties properties = new Properties(); 
     properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hbm2ddl.auto")); 
     properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect")); 
     properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql")); 
     properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql")); 
     // Configures the naming strategy that is used when Hibernate creates 
     // new database objects and schema elements 
     // properties.put("hibernate.ejb.naming_strategy", 
     // environment.getRequiredProperty("hibernate.ejb.naming_strategy")); 
     properties.put("hibernate.temp.use_jdbc_metadata_defaults", 
       environment.getRequiredProperty("use_jdbc_metadata_defaults")); 
     return properties; 
    } 

J'ai créé le BookRepository:

public interface BookRepository extends PagingAndSortingRepository<Book, Long> { 
} 

Maintenant, quand je suis en train de persister le livre à ma base de données que je suis face à un problème.

Exception rencontrée lors de l'initialisation du contexte - rafraîchissement tentative d'annulation: org.springframework.beans.factory.BeanCreationException: Erreur de création de haricot avec le nom « EntityManagerFactory » défini dans org.markit.oracle.datasource.config.EntityManagerConfiguration: appel de la méthode init échoué; exception imbriquée est org.hibernate.AnnotationException: Aucun identifiant spécifié pour l'entité: org.markit.oracle.model.Book

Je pense que je suis confronté à la question ci-dessus en raison de la colonne d'identité (oracle fonction 12c). Est-ce que quelqu'un peut suggérer ce que j'ai besoin de corriger/ajouter pour exécuter le code?

Répondre