Problemas com EJJ

Senhores, boa tarde.

Estou desenvolvendo uma aplicação utilizando EJB, Glassfish e JPA.
O Sistemas esta criando normalmente as tabelas no banco de dados mas quando vou persistir os dados o erro abaixo é apresentado:

     [code]
      INFO: Hibernate: 
insert 
into
    estado
    (est_ibge, est_nome, est_sigla) 
values
    (?, ?, ?)

AVISO: SQL Error: -1, SQLState: 42Y07
GRAVE: O esquema ‘POSTGRES’ não existe
AVISO: A system exception occurred during an invocation on EJB EstadoFacade method public void br.com.websiscon.bean.AbstractFacade.create(java.lang.Object)
javax.ejb.EJBException
at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5119)
at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5017)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4805)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
at $Proxy124.create(Unknown Source)
at br.com.websiscon.bean.EJB31_Generated__EstadoFacade__Intf____Bean.create(Unknown Source)
at br.com.websiscon.controller.EstadoController.addEstado(EstadoController.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:43)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:72)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:98)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:775)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1267)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not insert: [br.com.websiscon.model.Estado]
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
at com.sun.enterprise.container.common.impl.EntityManagerWrapper.persist(EntityManagerWrapper.java:258)
at br.com.websiscon.bean.AbstractFacade.create(AbstractFacade.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1056)
at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1128)
at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5292)
at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:567)
at org.jboss.weld.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:47)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:858)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:567)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157)
at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:139)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:858)
at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:367)
at com.sun.ejb.containers.BaseContainer._intercept(BaseContainer.java:5264)
at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5252)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:190)
… 46 more
Caused by: org.hibernate.exception.SQLGrammarException: could not insert: [br.com.websiscon.model.Estado]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:40)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2158)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2638)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
… 78 more
Caused by: java.sql.SQLSyntaxErrorException: O esquema ‘POSTGRES’ não existe
at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatement(Unknown Source)
at com.sun.gjc.spi.base.ConnectionHolder.prepareStatement(ConnectionHolder.java:535)
at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:251)
at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareCachedStatement(ConnectionWrapper40.java:48)
at com.sun.gjc.spi.ManagedConnection.prepareCachedStatement(ManagedConnection.java:880)
at com.sun.gjc.spi.jdbc40.ConnectionWrapper40.prepareStatement(ConnectionWrapper40.java:169)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:30)
… 93 more
Caused by: org.apache.derby.client.am.SqlException: O esquema ‘POSTGRES’ não existe
at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknown Source)
at org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput
(Unknown Source)
at org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOutput(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.prepare(Unknown Source)
at org.apache.derby.client.am.Connection.prepareStatementX(Unknown Source)
… 102 more
[/code]

Alguem pode me ajudar?

Coloca seu persistence.xml ai, pelo erro está tentando conectar no schema POSTGRES na base de dados e ele não existe.

Segue o persistence.xml

<?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="WebdemoPU">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="create"/>
      <property name="hibernate.archive.autodetection" value="class, hbm"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://192.168.x.xxx:5432/xxxx"/>
      <property name="hibernate.connection.username" value="xxxx"/>
      <property name="hibernate.connection.password" value="xxx"/>
      <property name="hibernate.connection.pool_size" value="5"/>
      <!-- <property name="hibernate.hbm2ddl.auto" value="update"/> -->
      <property name="hibernate.show_sql" value="true"/>
      <property name="hibernate.format_sql" value="true"/>
      <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider"/>
      <property name="hibernate.cache.use_query_cache" value="true"/>
      <property name="hibernate.cache.use_second_level_cache" value="true"/>
    </properties>
  </persistence-unit>
</persistence>
 <property name="hibernate.connection.url" value="jdbc:postgresql://192.168.x.xxx:5432/xxxx"/>  

Era essa linha que precisava ver.
Tu colocou os xxx para não divulgar o ip e o schema certo? só verifica no 5432/xxxx, se o xxxx correspondente é POSTGRES. Pelo erro ele está tentando conectar nesse schema, e ele não existe no banco. Verifica se o schema existe no banco, e se esse usuario tem acesso a ele.

<property name="hibernate.connection.url" value="jdbc:postgresql://192.168.x.xxx:5432/xxxx"/>

xxxx = nome da base de dados.

que neste exemplo seria agenda

<property name="hibernate.connection.url" value="jdbc:postgresql://192.168.x.xxx:5432/agenda"/>

Obrigado.

Boa tarde Galera,

Estou com o mesmo problema, estou utilizando o banco de dados Derby (em memória), e ao que me parece o hibernate não está conseguindo gerar a minha estrutura de banco de dados, que é composta por (schema.tabela), sendo que possuo diversos Schemas em todo o Banco de dados. No Sistema Utilizamos o Postgresql, porém estamos adotando a técnica do TDD (Test Driven Development), e para agilizar este processo optamos por utilizar um banco em memória (HSQLDB ou DERBY). Porém não estamos conseguindo da continuidade, devido a esse problema, vou postar o código de mapeamento da classe, o persistence.xml e a excessão gerada.
Se alguém souber ou puder ajudar, agradeço. :smiley:

Mapeamento da Classe:

[code] package br.fpf.laboratorio.entitybean;

// Generated 25/02/2008 16:05:28 by Hibernate Tools 3.2.0.b10

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cascade;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;

import br.fpf.saude.core.constants.IntegerConstant;

/**

  • TipoAmostra generated by hbm2java.
    */

@SuppressWarnings( “serial” )
@Entity
@Table( name = “tipo_amostra”, schema = “laboratorio” )
@SequenceGenerator( name = “idTipoAmostraSequence”, sequenceName = “laboratorio.tipo_amostra_id_tipo_amostra_seq” )
public class TipoAmostra implements java.io.Serializable {

/**
 * 
 */
private Integer idTipoAmostra;

/**
 * 
 */
private String txTipoAmostra;

/**
 * 
 */
private Boolean csColetaLocal;

/**
 * 
 */
private Boolean csAtivo;

/**
 * 
 */
private String txObservacao;

/**
 * 
 */
private Short nbSequencia;

/**
 * 
 */
public TipoAmostra() {
}

/***
 * 
 */
private Set<TipoExameRecomendacao> tipoExameRecomendacaos = new HashSet<TipoExameRecomendacao>( 0 );

/**
 * @param idTipoAmostra
 * @param txTipoAmostra
 * @param csColetaLocal
 * @param csAtivo
 */
public TipoAmostra( int idTipoAmostra, String txTipoAmostra, Boolean csColetaLocal, Boolean csAtivo ) {
    this.idTipoAmostra = idTipoAmostra;
    this.txTipoAmostra = txTipoAmostra;
    this.csColetaLocal = csColetaLocal;
    this.csAtivo = csAtivo;
}

/**
 * @param idTipoAmostra
 * @param txTipoAmostra
 * @param csColetaLocal
 * @param csAtivo
 * @param txObservacao
 */
public TipoAmostra( int idTipoAmostra, String txTipoAmostra, Boolean csColetaLocal, Boolean csAtivo,
                    String txObservacao ) {
    this.idTipoAmostra = idTipoAmostra;
    this.txTipoAmostra = txTipoAmostra;
    this.csColetaLocal = csColetaLocal;
    this.csAtivo = csAtivo;
    this.txObservacao = txObservacao;
}

@Id
@Column( name = "id_tipo_amostra", unique = true )
@GeneratedValue( strategy = GenerationType.IDENTITY, generator = "idTipoAmostraSequence" )

// @NotNull
public Integer getIdTipoAmostra() {
return this.idTipoAmostra;
}

public void setIdTipoAmostra( Integer idTipoAmostra ) {
    this.idTipoAmostra = idTipoAmostra;
}

@Column( name = "tx_tipo_amostra", nullable = false, length = IntegerConstant.CINQUENTA )

// @NotNull
// @Length( max = IntegerConstant.CINQUENTA )
public String getTxTipoAmostra() {
return this.txTipoAmostra;
}

public void setTxTipoAmostra( String txTipoAmostra ) {
    this.txTipoAmostra = txTipoAmostra;
}

public void setCsColetaLocal( Boolean csColetaLocal ) {
    this.csColetaLocal = csColetaLocal;
}

public void setCsAtivo( Boolean csAtivo ) {
    this.csAtivo = csAtivo;
}

@Column( name = "tx_observacao" )
public String getTxObservacao() {
    return this.txObservacao;
}

public void setTxObservacao( String txObservacao ) {
    this.txObservacao = txObservacao;
}

@Column( name = "cs_ativo" )
public Boolean getCsAtivo() {
    return this.csAtivo;
}

@Column( name = "cs_coleta_local" )
public Boolean getCsColetaLocal() {
    return this.csColetaLocal;
}

@Cascade( { org.hibernate.annotations.CascadeType.DELETE_ORPHAN, org.hibernate.annotations.CascadeType.SAVE_UPDATE,
        org.hibernate.annotations.CascadeType.MERGE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN } )
@OneToMany( cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH }, 
        fetch = FetchType.LAZY, mappedBy = "tipoExame" )
public Set<TipoExameRecomendacao> getTipoExameRecomendacaos() {
    return this.tipoExameRecomendacaos;
}

public void setTipoExameRecomendacaos( Set<TipoExameRecomendacao> tipoExameRecomendacaos ) {
    this.tipoExameRecomendacaos = tipoExameRecomendacaos;
}

/**
 * Hash para TipoExameAmostraId .
 * 
 * @return inteiro.
 */
@Override
public int hashCode() {
    int result = IntegerConstant.DEZESSETE;

    result = IntegerConstant.TRINTA_SETE * result;
    if ( this.getIdTipoAmostra() != null ) {
    	result += this.getIdTipoAmostra(); 
    }
 
    
    return result;
}

/**
 * Método verificador de equivalência.
 * 
 * @return booleano.
 */
@Override
public boolean equals( Object obj ) {
    if ( this == obj ) {
        return true;
    }
    if ( obj == null ) {
        return false;
    }
    final TipoAmostra other = (TipoAmostra) obj;

    if ( ( this.idTipoAmostra == null ) && ( other.getIdTipoAmostra() != null ) ) {
        return false;
    }

    if ( ( this.idTipoAmostra != null ) && ( other.getIdTipoAmostra() == null ) ) {
        return false;
    }
    
    if ( this.idTipoAmostra == null && other.getIdTipoAmostra() == null && ( 
            this != other ) ) {
        return false;
    }

    if ( this.idTipoAmostra.intValue() != other.getIdTipoAmostra().intValue() ) {
        return false;
    }
    return true;
}

@Override
public String toString() {
    return this.txTipoAmostra;
}

@Transient
public Short getNbSequencia() {
    return nbSequencia;
}


public void setNbSequencia( Short nbSequencia ) {
    this.nbSequencia = nbSequencia;
}

}
[/code]

Persistence.xml :

[code] <?xml version="1.0" encoding="UTF-8"?>

org.hibernate.ejb.HibernatePersistence
  <!-- POSTGRES
  <properties>
     <property name="hibernate.hbm2ddl.auto" value="validate"/>
     <property name="hibernate.cache.use_query_cache" value="false"/>
     <property name="hibernate.cache.use_second_level_cache" value="false"/>
     <property name="hibernate.show_sql" value="true"/>
     <property name="jboss.entity.manager.factory.jndi.name" value="java:/iDoctorTestEntityManagerFactory" />
     <property name="hibernate.connection.password" value="senha"/>
	 <property name="hibernate.connection.username" value="root"/>
	 <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
	 <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/iDoctor"/>
	 <property name="hibernate.connection.provider_class" value="org.hibernate.connection.DriverManagerConnectionProvider"/>
	 <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
  </properties>
 -->
     
         <!-- DERBY DB -->        
     <properties>
   <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
   <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/> 
   <property name="hibernate.connection.url" value="jdbc:derby:memory:iDoctor;create=true"/>  
   <property name="hibernate.connection.username" value=""/>
   <property name="hibernate.connection.password" value=""/>
   <!-- Enable Hibernate's automatic session context management -->
   <property name="current_session_context_class" value="thread"/>
   <!-- JDBC connection pool (use the built-in) -->
   <property name="connection.pool_size" value="5"/>
   <!-- Drop and re-create the database schema on startup -->
   <property name="hbm2ddl.auto" value="create-drop"/>

   <!-- helper debug settings -->
   <property name="hibernate.show_sql" value="true"/>
   <property name="hibernate.format_sql" value="true"/>
   
   <property name="hibernate.cache.use_query_cache" value="false"/>
     <property name="hibernate.cache.use_second_level_cache" value="false"/>
    </properties>
     
  </persistence-unit>

[/code]

Excessão Gerada :

[quote] Caused by: org.hibernate.exception.SQLGrammarException: could not insert: [br.fpf.laboratorio.entitybean.TipoAmostra]
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:40)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2163)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2643)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:51)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
… 30 more
Caused by: java.sql.SQLSyntaxErrorException: O esquema ‘LABORATORIO’ não existe
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.(Unknown Source)
at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:94)
at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:30) [/quote]

Muito Obrigado.

[quote=mateus.said]Boa tarde Galera,

Estou com o mesmo problema, estou utilizando o banco de dados Derby (em memória), e ao que me parece o hibernate não está conseguindo gerar a minha estrutura de banco de dados, que é composta por (schema.tabela), sendo que possuo diversos Schemas em todo o Banco de dados. No Sistema Utilizamos o Postgresql, porém estamos adotando a técnica do TDD (Test Driven Development), e para agilizar este processo optamos por utilizar um banco em memória (HSQLDB ou DERBY). Porém não estamos conseguindo da continuidade, devido a esse problema, vou postar o código de mapeamento da classe, o persistence.xml e a excessão gerada.
Se alguém souber ou puder ajudar, agradeço. :smiley:


[/quote]

Olá,

Na anotação da tabela TipoAmostra você usa o seguinte código:

@Table( name = "tipo_amostra", schema = "laboratorio" )  

O erro esta ocorrendo porque não foi encontrado o schema laboratorio na sua base de dados.

O schema laboratorio existe na sua base de dados?

A sua tabela “tipo_amostra” não esta no schema “iDoctor”? Se sim, você não precisa utilizar o atributo “schema=laboratorio” na anotação @Table.
Experimente tirar o “shema=laboratorio” para ver se funciona.

Bom dia Nikolas,
Primeiramente obrigado pela resposta. :smiley:

Deixa eu explicar situação p vc entender. nós ja temos um sistema rodando, utilizando as seguintes tecnologias: JBoss + Hibernate + JSF. Esse Sistema utiliza a base de dados do PostgreSql, e por ser um sistema bastante grande e até mesmo para organização, a estrutura de banco de dados, foi organizada em schemas. Na base temos em torno de uns 13 a 14 schemas e dentro de cada schema desse, temos as tabelas. (schema.tabela).
Porém surgiu a necessidade de fazermos testes unitários, e rodadndo esses testes no postgreSql fica muito lento o processo, optamos por escolher o DERBY db (em memória) especificamente para esses testes. Porém na hora de gerar a base de dados via Hibernate (persistence.xml) (), ocorre um erro, pois o hibernate cria primeiro as tabelas e depois tenta criar os schemas, mesmo as classes estando devidamente anotadas @Table( name = “tipo_amostra”, schema = “laboratorio” ). OBS: Isso ocorre para a geração do banco no DERBYDB em memória. A partir dessa anotation deveria ser gerada a tabela da seguinte forma: laboratorio.tipo_amostra .

OBS: Também ja tentamos utilizar o HSQL DB, mas o mesmo problema ocorre.

Será se haveria uma forma de forçar o hibernate a criar primeiro os schemas, para ai sim gerar as tabelas?
Ou há alguma forma de criar esses schemas de forma manual, diretamente no persistence.xml?

Muito Obrigado.

Bom dia PEssoal. :smiley:

Alguma Dica???

Valeu :wink: