Olá!
Como faço para configurar no hibernate para acessar tabelas de usuarios diferentes?
Ex: graduacao.aluno (usuario/tabela)
biblioteca.livro(usuario/tabela)
select * from graduacao.aluno;
select * from biblioteca.livro
Olá!
Como faço para configurar no hibernate para acessar tabelas de usuarios diferentes?
Ex: graduacao.aluno (usuario/tabela)
biblioteca.livro(usuario/tabela)
select * from graduacao.aluno;
select * from biblioteca.livro
Até onde eu saiba, quando vc esta mapeando a classe, vc informa qual schema que ela pertence:
@Entity
@Table(schema="system")
public class Banco {
Se estiver usando JPA pode fazer isso facilmente criando um novo no persistence.xml, apontando para um outro schema.
Sávio Barros
Opa!Obrigado por responderem!
Vou testar e logo digo.
E mais uma dúvida: alem de fazer isso, ao criar uma “sqlquery” eu teria que colocar “graduacao.aluno”???
Vlw!
Uma graduação possui vários alunos? Se sim, ao trazer a graduação o JPQL já te retornará todos os alunos vinculados à ela
graduacao seria o nome da tablespace…
não é obrigatório se vc já estiver usando, já estiver dentro da tablespace…
vlw!
E no caso de fazer um createsqlquery(“select * from graduacao.turma”) funcionou…e no caso de createquery(“from turma”) o schema funciona tbm.
Mto obrigado boas festas!
aff…nao foi bem assim… :oops:
Me deu um erro ao tentar fazer uma query:
org.hibernate.hql.ast.QuerySyntaxException: bloco is not mapped [from bloco where codcampus = :codcampus]
at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:158)
at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87)
at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70)
at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:265)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3056)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
at br.unig.scif.dao.BlocoDao.procuraBlocoporCampus(BlocoDao.java:24)
at br.unig.scif.bean.CampusBean.getListarBlocos(CampusBean.java:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
at org.apache.el.parser.AstValue.getValue(AstValue.java:114)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101)
at javax.faces.component.UISelectItems.getValue(UISelectItems.java:130)
at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:323)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:833)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:809)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:244)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:175)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:237)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
Minha query:
public List procuraBlocoporCampus (Campus campus){
return this.session.createQuery("from bloco where codcampus = :codcampus")
.setParameter("codcampus", campus.getCodCampus())
.list();
}
minha classe:
@Entity
@Table(name="bloco",schema="scif")
public class Bloco implements Serializable{
@EmbeddedId
private BlocoPK id;
@ManyToOne (fetch=FetchType.LAZY)
@JoinColumn(name="codcampus",insertable=false,updatable=false)
private Campus campus;
@Column(name="codbloco",insertable=false,updatable=false)
private String codBloco;
//gets e sets omitidos
E no banco:
SQL> desc graduacao.campus;
Nome Nulo? Tipo
----------------------------------------------------- -------- ------------------------------------
BAIRRO VARCHAR2(30)
CEP VARCHAR2(8)
CGC VARCHAR2(14)
CIDADE VARCHAR2(30)
CODCAMPUS NOT NULL VARCHAR2(2)
ENDR VARCHAR2(50)
NOMECAMPUS VARCHAR2(30)
TEL VARCHAR2(14)
UF VARCHAR2(2)
SQL> desc scif.bloco;
Nome Nulo? Tipo
----------------------------------------------------- -------- ------------------------------------
CODCAMPUS NOT NULL VARCHAR2(2)
CODBLOCO NOT NULL VARCHAR2(1)
Vlw!
Vc está usando JPA ou HB Clássico com hibernate.cfg.xml?
Acho que está faltando alternar o schema, já que bloco está em outro schema.
Sim!!!
Estou usando o hibernate.cfg.xml.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="">
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@serveroracle:1521:ORACLE</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.connection.username">user</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="c3p0.max_size">30</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">1200</property>
<mapping class="br.unig.scif.modelo.Campus"/>
<mapping class="br.unig.scif.modelo.Bloco"/>
<mapping class="br.unig.scif.modelo.Pavimento"/>
<mapping class="br.unig.scif.modelo.Andar"/>
<mapping class="br.unig.scif.modelo.Sala"/>
<mapping class="br.unig.scif.modelo.TipoSala"/>
<mapping class="br.unig.scif.modelo.Turma"/>
<mapping class="br.unig.scif.modelo.Aloca"/>
<mapping class="br.unig.scif.modelo.Cursos"/>
<mapping class="br.unig.scif.modelo.Matriculado"/>
</session-factory>
</hibernate-configuration>
Eu estava fazendo meu projeto em um servidor de desenvolvimento, agora eu estou passando para o de produção e nao havia a tablespace “SCIF” e suas tabelas neste servidor, somente a tablespace “GRADUACAO” e suas tabelas. O DBA criou SCIF e as tabelas, criou um usuario e me deu permissão para acessar as devidas tabelas em GRADUACAO e SCIF.