2

I’m using Spring 4 & Hibernate 5 with JPA and and Oracle Database, i have checked all my code and there is only one entity and a single table with the name LANGUE, My project still refuses to compile because of this error, Can someone help me please ….,

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:faces="http://www.springframework.org/schema/faces"
xmlns:int-security="http://www.springframework.org/schema/integration/security"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/integration/security http://www.springframework.org/schema/integration/security/spring-integration-security-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd
    http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/faces http://www.springframework.org/schema/faces/spring-faces-2.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="com.collecteJ.crud" />
<context:component-scan base-package="com.collecteJ.crud.entities" />
<context:component-scan base-package="com.collecteJ.crud.test.entities" />    
<context:component-scan base-package="com.collecteJ.crud.dao"/>
<context:component-scan base-package="com.collecteJ.crud.test.dao" />
<context:component-scan base-package="com.collecteJ.crud.service"/>    
<context:component-scan base-package="com.collecteJ.crud.test.service"/>
<context:component-scan base-package="com.collecteJ.crud.test"/>
<context:component-scan base-package="com.collecteJ.business.compte"/>
<context:component-scan base-package="com.collecteJ.business.compte.impl" /> 
<context:component-scan base-package="com.collecteJ.business.service"/>
<context:component-scan base-package="com.collecteJ.business.service.impl" /> 
<context:component-scan base-package="com.collecteJ.business.test" />


<aop:config proxy-target-class="true"/>

<bean 
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location"> 
            <value> database.properties</value>
        </property> 
    </bean>


<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" >  
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}"/>  
        <property name="user" value="${jdbc.username}"/>  
        <property name="password" value="${jdbc.password}"/>
        <property name="acquireIncrement" value="1"/>   
        <property name="maxPoolSize" value="10" />
        <property name="maxStatements" value="0" />
        <property name="minPoolSize" value="5" />  
</bean>

<bean id="JDBCDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/> 
</bean>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" > 
            <property name="generateDdl" value="true" />                                                           
            <property  name="showSql" value="true"/> 
        </bean>
    </property>
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>                
    <property name="dataSource" ref="pooledDataSource" />
    <property name="persistenceUnitName" value="collecteJCrudSpringPU"/> 
</bean>

<bean name="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />     
</bean>

<tx:annotation-driven />

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

</beans>

persitence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="collecteJCrudSpringPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>com.collecteJ.crud.entities.Account</class>
<class>com.collecteJ.crud.entities.Agence</class>
<class>com.collecteJ.crud.entities.Collecte</class>
<class>com.collecteJ.crud.entities.Collecteur</class>
<class>com.collecteJ.crud.entities.CollecteurCompte</class>
<class>com.collecteJ.crud.entities.Compte</class>
<class>com.collecteJ.crud.entities.Comptecollecte</class>
<class>com.collecteJ.crud.entities.Devise</class>
<class>com.collecteJ.crud.entities.EtatCivil</class>
<class>com.collecteJ.crud.entities.Role</class>
<class>com.collecteJ.crud.entities.TypeTransaction</class>
<class>com.collecteJ.crud.entities.Utilisateur</class>
<class>com.collecteJ.crud.test.entities.Testtable</class> 
</persistence-unit>
</persistence>

stack trace

run:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further     details.
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in URL [file:/C:/Users/hpcc/Documents/GoldTelecom/NetBeansProjects/collecteJCrud/build/classes/com/collecteJ/crud/config/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: collecteJCrudSpringPU] Unable to build Hibernate SessionFactory
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.collecteJ.crud.main.MainTest2.main(MainTest2.java:32)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: collecteJCrudSpringPU] Unable to build Hibernate SessionFactory
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:954)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:882)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 12 more
Caused by: org.hibernate.tool.schema.extract.spi.SchemaExtractionException:  More than one table found in namespace (, ) : LANGUE
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.processGetTableResults(InformationExtractorJdbcDatabaseMetaDataImpl.java:381)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTable(InformationExtractorJdbcDatabaseMetaDataImpl.java:279)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTableInformation(DatabaseInformationImpl.java:105)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:162)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:133)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:470)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879)
... 17 more
Java Result: 1
BUILD SUCCESSFUL (total time: 14 seconds)

Language.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.collecteJ.crud.entities;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Cyrille benito
 */
@Entity
@Table(name = "LANGUE")
@NamedQueries({
@NamedQuery(name = "Langue.findAll", query = "SELECT l FROM Langue l"),
@NamedQuery(name = "Langue.findByCodeLangue", query = "SELECT l FROM Langue l WHERE l.codeLangue = :codeLangue"),
@NamedQuery(name = "Langue.findByReference", query = "SELECT l FROM Langue l WHERE l.reference = :reference"),
@NamedQuery(name = "Langue.findByLibelle", query = "SELECT l FROM Langue l WHERE l.libelle = :libelle"),
@NamedQuery(name = "Langue.findByFormatDateCourte", query = "SELECT l FROM Langue l WHERE l.formatDateCourte = :formatDateCourte"),
@NamedQuery(name = "Langue.findByFormatDateLongue", query = "SELECT l FROM Langue l WHERE l.formatDateLongue = :formatDateLongue"),
@NamedQuery(name = "Langue.findByFormatHeure", query = "SELECT l FROM Langue l WHERE l.formatHeure = :formatHeure"),
@NamedQuery(name = "Langue.findByFormatNumerique", query = "SELECT l FROM Langue l WHERE l.formatNumerique = :formatNumerique"),
@NamedQuery(name = "Langue.findByTaillePartieDecimale", query = "SELECT l FROM Langue l WHERE l.taillePartieDecimale = :taillePartieDecimale"),
@NamedQuery(name = "Langue.findBySeparateurMillier", query = "SELECT l FROM Langue l WHERE l.separateurMillier = :separateurMillier"),
@NamedQuery(name = "Langue.findBySeparateurPartieDecimale", query = "SELECT l FROM Langue l WHERE l.separateurPartieDecimale = :separateurPartieDecimale"),
@NamedQuery(name = "Langue.findByUtilisateuridModif", query = "SELECT l FROM Langue l WHERE l.utilisateuridModif = :utilisateuridModif"),
@NamedQuery(name = "Langue.findByUtilisateuridCrea", query = "SELECT l FROM Langue l WHERE l.utilisateuridCrea = :utilisateuridCrea"),
@NamedQuery(name = "Langue.findByDateCreation", query = "SELECT l FROM Langue l WHERE l.dateCreation = :dateCreation"),
@NamedQuery(name = "Langue.findByDateModification", query = "SELECT l FROM Langue l WHERE l.dateModification = :dateModification")})
public class Langue implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "CODE_LANGUE")
    private String codeLangue;
    @Basic(optional = false)
    @Column(name = "REFERENCE")
    private String reference;
    @Basic(optional = false)
    @Column(name = "LIBELLE")
    private String libelle;
    @Column(name = "FORMAT_DATE_COURTE")
    private String formatDateCourte;
    @Column(name = "FORMAT_DATE_LONGUE")
    private String formatDateLongue;
    @Column(name = "FORMAT_HEURE")
    private String formatHeure;
    @Column(name = "FORMAT_NUMERIQUE")
    private String formatNumerique;
    @Column(name = "TAILLE_PARTIE_DECIMALE")
    private BigInteger taillePartieDecimale;
    @Column(name = "SEPARATEUR_MILLIER")
    private String separateurMillier;
    @Column(name = "SEPARATEUR_PARTIE_DECIMALE")
    private String separateurPartieDecimale;
    @Column(name = "UTILISATEURID_MODIF")
    private BigInteger utilisateuridModif;
    @Column(name = "UTILISATEURID_CREA")
    private BigInteger utilisateuridCrea;
    @Column(name = "DATE_CREATION")
    @Temporal(TemporalType.DATE)
    private Date dateCreation;
    @Column(name = "DATE_MODIFICATION")
    @Temporal(TemporalType.DATE)
    private Date dateModification;

    public Langue() {
}

public Langue(String codeLangue) {
    this.codeLangue = codeLangue;
}

public Langue(String codeLangue, String reference, String libelle) {
    this.codeLangue = codeLangue;
    this.reference = reference;
    this.libelle = libelle;
}

public String getCodeLangue() {
    return codeLangue;
}

public void setCodeLangue(String codeLangue) {
    this.codeLangue = codeLangue;
}

public String getReference() {
    return reference;
}

public void setReference(String reference) {
    this.reference = reference;
}

public String getLibelle() {
    return libelle;
}

public void setLibelle(String libelle) {
    this.libelle = libelle;
}

public String getFormatDateCourte() {
    return formatDateCourte;
}

public void setFormatDateCourte(String formatDateCourte) {
    this.formatDateCourte = formatDateCourte;
}

public String getFormatDateLongue() {
    return formatDateLongue;
}

public void setFormatDateLongue(String formatDateLongue) {
    this.formatDateLongue = formatDateLongue;
}

public String getFormatHeure() {
    return formatHeure;
}

public void setFormatHeure(String formatHeure) {
    this.formatHeure = formatHeure;
}

public String getFormatNumerique() {
    return formatNumerique;
}

public void setFormatNumerique(String formatNumerique) {
    this.formatNumerique = formatNumerique;
}

public BigInteger getTaillePartieDecimale() {
    return taillePartieDecimale;
}

public void setTaillePartieDecimale(BigInteger taillePartieDecimale) {
    this.taillePartieDecimale = taillePartieDecimale;
}

public String getSeparateurMillier() {
    return separateurMillier;
}

public void setSeparateurMillier(String separateurMillier) {
    this.separateurMillier = separateurMillier;
}

public String getSeparateurPartieDecimale() {
    return separateurPartieDecimale;
}

public void setSeparateurPartieDecimale(String separateurPartieDecimale) {
    this.separateurPartieDecimale = separateurPartieDecimale;
}

public BigInteger getUtilisateuridModif() {
    return utilisateuridModif;
}

public void setUtilisateuridModif(BigInteger utilisateuridModif) {
    this.utilisateuridModif = utilisateuridModif;
}

public BigInteger getUtilisateuridCrea() {
    return utilisateuridCrea;
}

public void setUtilisateuridCrea(BigInteger utilisateuridCrea) {
    this.utilisateuridCrea = utilisateuridCrea;
}

public Date getDateCreation() {
    return dateCreation;
}

public void setDateCreation(Date dateCreation) {
    this.dateCreation = dateCreation;
}

public Date getDateModification() {
    return dateModification;
}

public void setDateModification(Date dateModification) {
    this.dateModification = dateModification;
}

@Override
public int hashCode() {
    int hash = 0;
    hash += (codeLangue != null ? codeLangue.hashCode() : 0);
    return hash;
}

@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Langue)) {
        return false;
    }
    Langue other = (Langue) object;
    if ((this.codeLangue == null && other.codeLangue != null) || (this.codeLangue != null && !this.codeLangue.equals(other.codeLangue))) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return "com.collecteJ.crud.entities.Langue[ codeLangue=" + codeLangue + " ]";
}

}

benito
  • 655
  • 6
  • 12

1 Answers1

2

Try to change line

<property name="generateDdl" value="true" />   

to:

<property name="generateDdl" value="false" />   
  • Big Thanks ! That saved me – benito Nov 22 '16 at 10:39
  • Can you check my answer as usefull please? :) – Przemysław Niedziela Nov 23 '16 at 09:40
  • 1
    How come this resolved my problem too? I don't understand why this resolved the problem. – Mital Pritmani Mar 20 '17 at 14:05
  • 1
    see this http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/orm/jpa/vendor/AbstractJpaVendorAdapter.html#setGenerateDdl-boolean- if you set generateDdl to true value, framework will to trying create table whenever you compile it. If table exists now, framework will throw exception, because cannot exists two tables with the same name. And when you drop table, and compile project, first compile will be fine, and second throw exception. Setting generateDdl to false will only update table, but no create it. So if you add field to class, in db will be added column only. – Przemysław Niedziela Mar 21 '17 at 09:55