[HIBERNATE] Erro com SQL Server 2008 e Hibernate 4.1

6 respostas
E

Boa tarde a todos.

Estou enfrentando um problema e não consegui encontrar solução. Portanto mais uma vez recorro a vocês.

Não sei se alguém já passou por este tipo de problemas, mas vamos lá. Minha aplicação está gerando o seguinte erro:

18/05/2012 17:44:53 org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
18/05/2012 17:44:53 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.1.0.Final}
18/05/2012 17:44:53 org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
18/05/2012 17:44:53 org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
18/05/2012 17:44:53 org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
18/05/2012 17:44:53 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
18/05/2012 17:44:53 org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
18/05/2012 17:44:53 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
18/05/2012 17:44:53 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 1
18/05/2012 17:44:53 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: false
18/05/2012 17:44:53 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] at URL [jdbc:sqlserver://192.168.2.23:1433]
18/05/2012 17:44:53 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=sa, password=****}
18/05/2012 17:44:54 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.SQLServer2008Dialect
18/05/2012 17:44:54 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
18/05/2012 17:44:54 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Hibernate: select sya010x0_.R_E_C_N_O_ as R1_0_, sya010x0_.D_E_L_E_T_ as D2_0_, sya010x0_.R_E_C_D_E_L_ as R3_0_, sya010x0_.YA_ABICS as YA4_0_, sya010x0_.YA_ALADI as YA5_0_, sya010x0_.YA_CODGI as YA6_0_, sya010x0_.YA_CODRIEX as YA7_0_, sya010x0_.YA_COMUM as YA8_0_, sya010x0_.YA_DESCR as YA9_0_, sya010x0_.YA_DINALAD as YA10_0_, sya010x0_.YA_FILIAL as YA11_0_, sya010x0_.YA_IDIOMA as YA12_0_, sya010x0_.YA_LI as YA13_0_, sya010x0_.YA_MERCOSU as YA14_0_, sya010x0_.YA_NALADI as YA15_0_, sya010x0_.YA_NOIDIOM as YA16_0_, sya010x0_.YA_PAIS_I as YA17_0_, sya010x0_.YA_SGPC as YA18_0_, sya010x0_.YA_SIGLA as YA19_0_, sya010x0_.YA_SISEXP as YA20_0_ from SYA010 sya010x0_
18/05/2012 17:44:54 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 208, SQLState: S0002
18/05/2012 17:44:54 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Invalid object name 'SYA010'.

Minha classe SYA010 é esta:

@Entity
@Table(name="SYA010")
public class SYA010 implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="R_E_C_N_O_")
	private int rECNO;

	@Column(name="D_E_L_E_T_")
	private String dELET;

	@Column(name="R_E_C_D_E_L_")
	private int rECDEL;

	@Column(name="YA_ABICS")
	private String yaAbics;

	@Column(name="YA_ALADI")
	private String yaAladi;

	@Column(name="YA_CODGI")
	private String yaCodgi;

	@Column(name="YA_CODRIEX")
	private String yaCodriex;

	@Column(name="YA_COMUM")
	private String yaComum;

	@Column(name="YA_DESCR")
	private String yaDescr;

	@Column(name="YA_DINALAD")
	private String yaDinalad;

	@Column(name="YA_FILIAL")
	private String yaFilial;

	@Column(name="YA_IDIOMA")
	private String yaIdioma;

	@Column(name="YA_LI")
	private String yaLi;

	@Column(name="YA_MERCOSU")
	private String yaMercosu;

	@Column(name="YA_NALADI")
	private String yaNaladi;

	@Column(name="YA_NOIDIOM")
	private String yaNoidiom;

	@Column(name="YA_PAIS_I")
	private String yaPaisI;

	@Column(name="YA_SGPC")
	private String yaSgpc;

	@Column(name="YA_SIGLA")
	private String yaSigla;

	@Column(name="YA_SISEXP")
	private String yaSisexp;

(...)

Se perceberem na SQL do Hibernate ele está incluindo o nome sya010x0_. Não entendo por que isto está acontecendo.

Eu usei Engenharia Reversa para criar esta classe SYA010.

Espero que possam me ajudar.

6 Respostas

W

é um alias para sua tabéla. tenta rodar esse query na mão no seu banco de dados, e veja se dá algum problema:

select sya010x0_.R_E_C_N_O_ as R1_0_, sya010x0_.D_E_L_E_T_ as D2_0_, sya010x0_.R_E_C_D_E_L_ as R3_0_, sya010x0_.YA_ABICS as YA4_0_, sya010x0_.YA_ALADI as YA5_0_, sya010x0_.YA_CODGI as YA6_0_, sya010x0_.YA_CODRIEX as YA7_0_, sya010x0_.YA_COMUM as YA8_0_, sya010x0_.YA_DESCR as YA9_0_, sya010x0_.YA_DINALAD as YA10_0_, sya010x0_.YA_FILIAL as YA11_0_, sya010x0_.YA_IDIOMA as YA12_0_, sya010x0_.YA_LI as YA13_0_, sya010x0_.YA_MERCOSU as YA14_0_, sya010x0_.YA_NALADI as YA15_0_, sya010x0_.YA_NOIDIOM as YA16_0_, sya010x0_.YA_PAIS_I as YA17_0_, sya010x0_.YA_SGPC as YA18_0_, sya010x0_.YA_SIGLA as YA19_0_, sya010x0_.YA_SISEXP as YA20_0_ from SYA010 sya010x0_

edit: tem um cara no stackoverflow que teve o mesmo problema que o seu, ele passou o schema do banco seguido de um “.” (ponto) e disse que funcinou. Veja esse tópico:

ex: se seu esquema for meubanco, declare: meubanco.

ou

fonte: http://www.coderanch.com/t/217521/ORM/java/database-select-hibernate

[]'s

E

WRYEL:
edu_fernandes:

Se perceberem na SQL do Hibernate ele está incluindo o nome sya010x0_. Não entendo por que isto está acontecendo.

é um alias para sua tabéla. tenta rodar esse query na mão no seu banco de dados, e veja se dá algum problema:

select sya010x0_.R_E_C_N_O_ as R1_0_, sya010x0_.D_E_L_E_T_ as D2_0_, sya010x0_.R_E_C_D_E_L_ as R3_0_, sya010x0_.YA_ABICS as YA4_0_, sya010x0_.YA_ALADI as YA5_0_, sya010x0_.YA_CODGI as YA6_0_, sya010x0_.YA_CODRIEX as YA7_0_, sya010x0_.YA_COMUM as YA8_0_, sya010x0_.YA_DESCR as YA9_0_, sya010x0_.YA_DINALAD as YA10_0_, sya010x0_.YA_FILIAL as YA11_0_, sya010x0_.YA_IDIOMA as YA12_0_, sya010x0_.YA_LI as YA13_0_, sya010x0_.YA_MERCOSU as YA14_0_, sya010x0_.YA_NALADI as YA15_0_, sya010x0_.YA_NOIDIOM as YA16_0_, sya010x0_.YA_PAIS_I as YA17_0_, sya010x0_.YA_SGPC as YA18_0_, sya010x0_.YA_SIGLA as YA19_0_, sya010x0_.YA_SISEXP as YA20_0_ from SYA010 sya010x0_

edit: tem um cara no stackoverflow que teve o mesmo problema que o seu, ele passou o schema do banco seguido de um “.” (ponto) e disse que funcinou. Veja esse tópico:

ex: se seu esquema for meubanco, declare: meubanco.

ou

fonte: http://www.coderanch.com/t/217521/ORM/java/database-select-hibernate

[]'s

Ele não roda no SQL pois o problema é justamente esse “Alias” que ele está criando, pois na base não existe esse sya010x0_, a minha tabela é apenas SYA010. Vou ver o post e depois repasso para ver se funcionou.

Obrigado.

E

WRYEL como prometido aqui estou eu novamente.

Funcionou! Obrigado pela dica, mas acredito que não foi por este caminho. Eu coloquei schema_default no meu arquivo .xml mas o que fez a diferença foi minha string de conexão com o banco.

ela ficou assim:

jdbc:sqlserver://***.***.*.**:1433;databaseName=DBTESTE

Este componente “databaseName” foi quem fez o negócio funcionar, antes eu não tinha colocado ele, mas o “DBTESTE”.

Mas eu lí o post que você me mandou e coloquei ele no meu arquivo cfg também. De qualquer forma foi través dele que consegui uma solução.

Muito obrigado.

D

Camarada, a Structured Query Language, base para todos os “SQL” de qualquer SGBD permite que você defina um alias na própria query, como

--perceba from [NOME_DO_BANCO] [ALIAS]
from SYA010 sya010x0_

Eu já suspeitaria do hibernate.
Tópicos com as palavras erro e hibernate 4.x estão se tornando muito comuns.

Complementando,

SELECT a.col1 as COL1, a.col2 as COL2, a.col3 as COL3
FROM tabela1 a
WHERE a.col1 = ?

O uso da sintaxe acima está perfeitamente correto.
Temos um alias para tabela (a) e um para cada coluna selecionada (col1, col2 e col3).
As boas práticas até indicam o uso de tal sintaxe (aliases), para melhorar a leitura do código gerado para DDL ou queries.

E

drsmachado:
Camarada, a Structured Query Language, base para todos os “SQL” de qualquer SGBD permite que você defina um alias na própria query, como

--perceba from [NOME_DO_BANCO] [ALIAS]
from SYA010 sya010x0_

Eu já suspeitaria do hibernate.
Tópicos com as palavras erro e hibernate 4.x estão se tornando muito comuns

Obrigado pela resposta, mas como pôde ler acima do seu post eu consegui, juntamente com a colaboração do GUJ, solucionar o problema.

Esses tópicos realmente se tornam comuns, mas eu não encontrei nada parecido anteriormente, pode existir, talvez não tenha usado as palavras chaves corretas para a busca.

De qualquer forma agradeço mais uma vez.

D

edu_fernandes:
drsmachado:
Camarada, a Structured Query Language, base para todos os “SQL” de qualquer SGBD permite que você defina um alias na própria query, como

--perceba from [NOME_DO_BANCO] [ALIAS]
from SYA010 sya010x0_

Eu já suspeitaria do hibernate.
Tópicos com as palavras erro e hibernate 4.x estão se tornando muito comuns

Obrigado pela resposta, mas como pôde ler acima do seu post eu consegui, juntamente com a colaboração do GUJ, solucionar o problema.

Esses tópicos realmente se tornam comuns, mas eu não encontrei nada parecido anteriormente, pode existir, talvez não tenha usado as palavras chaves corretas para a busca.

De qualquer forma agradeço mais uma vez.


Sim, quando postei você ainda não havia postado, acho que o fez enquanto eu inseria minha posição.
Quis dizer que o hibernate 4 parece não estar maduro, pois há vários problemas ocorrendo com ele nos projetos que vejo por aí.
Eu mesmo quebrei muito a cabeça com essa coisa.

Criado 18 de maio de 2012
Ultima resposta 23 de mai. de 2012
Respostas 6
Participantes 3