JPA2 + Hibernate + Mysql5 erros de conversão byte[] para LongBlob

1 resposta
leonardobhbr

Bom dia, galera.

Estou com um problemasso

tenho uma tabela usuario onde meu campo login e criptografado o hibernate criou meu campo como “LONGBLOB” na minha entity ta assim

@Basic(optional = false)
	@Lob
	@Column(name = "login", nullable = false)
	private byte[] login;

E tenho uma NamedQuery para verificar se o login já existe

e minha pesquisa esta assim

Query query;
		query = createNamedQuery("Usuario.findByLogin");
		try
		{			
			query.setParameter("login",pojo.getLogin());
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		query.getSingleResult();
		return false;

ao tentar executar a linha query.setParameter("login",pojo.getLogin())
lança a seguinte exceção

java.lang.ClassCastException: [B cannot be cast to [Ljava.lang.Object; at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:348) at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:354) at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:71) at br.com.atlantica.validadorsped.orm.dao.UsuarioDAO.isLoginValid(UsuarioDAO.java:38) at br.com.atlantica.validadorsped.service.UsuarioService.isLoginValid(UsuarioService.java:70) at br.com.atlantica.validadorsped.bean.UsuarioBean.setLogin(UsuarioBean.java:81) 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 br.com.atlantica.bind.model.FieldBindableModel.executeMethodSet(FieldBindableModel.java:180) at br.com.atlantica.bind.reflection.UpdateModel.getValueForModel(UpdateModel.java:35) at br.com.atlantica.bind.reflection.UpdateModel.getValueForModel(UpdateModel.java:71) at br.com.atlantica.bind.reflection.Binder.updateObjectOfModelVerifier(Binder.java:210) at br.com.atlantica.bind.inputverifier.BindInputVerifierMessage.validationCriteria(BindInputVerifierMessage.java:50) at br.com.atlantica.messages.inputverifier.AbstractValidatorVerifier.verify(AbstractValidatorVerifier.java:93) at javax.swing.InputVerifier.shouldYieldFocus(InputVerifier.java:114) at javax.swing.JComponent$1.acceptRequestFocus(JComponent.java:3535) at java.awt.Component.isRequestFocusAccepted(Component.java:7476) at java.awt.Component.requestFocusHelper(Component.java:7380) at java.awt.Component.requestFocus(Component.java:7252) at java.awt.Component.postNextFocusHelper(Component.java:7655) at java.awt.Component.nextFocusHelper(Component.java:7620) at java.awt.Container.nextFocusHelper(Container.java:3154) at java.awt.Component.nextFocus(Component.java:7612) at java.awt.Component.transferFocus(Component.java:7564) at java.awt.DefaultKeyboardFocusManager.focusNextComponent(DefaultKeyboardFocusManager.java:1299) at java.awt.DefaultKeyboardFocusManager.processKeyEvent(DefaultKeyboardFocusManager.java:1061) at java.awt.Component.dispatchEventImpl(Component.java:4537) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:712) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:990) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:855) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:676) at java.awt.Component.dispatchEventImpl(Component.java:4502) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178) at java.awt.Dialog$1.run(Dialog.java:1046) at java.awt.Dialog$3.run(Dialog.java:1098) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:1096) at java.awt.Component.show(Component.java:1563) at java.awt.Component.setVisible(Component.java:1515) at java.awt.Window.setVisible(Window.java:842) at java.awt.Dialog.setVisible(Dialog.java:986) at br.com.atlantica.validadorsped.view.PrincipalView$7.run(PrincipalView.java:613) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:597) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Alguem poderia me ajudar

1 Resposta

partenon

Parece que este eh um problema conhecido: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5292

Se quiser ajudar (e ver este problema corrigido), vc pode mandar um test case. Assim que for enviado, alguem olhara e arrumara o problema. Para criar o test case, vc pode seguir estes passos:

  • Faca o checkout do trunk: http://anonsvn.jboss.org/repos/hibernate/core/trunk
  • Crie um test case (ou atualize um) no modulo entitymanager, que reproduza seu problema
  • Se quiser, pode aplicar o patch descrito no JIRA acima e rode o test suite com e sem o seu fix… dessa forma, vc vai saber se o fix quebra alguma outra coisa
  • Crie dois arquivos de patch usando o “svn diff”, um para o teste e outro para a correcao
  • Faca upload destes arquivos no JIRA acima

Se preferir, pode colocar seus test cases aqui que eu dou uma olhada e subo para o JIRA acima (posso ateh rodar o testsuite para vc, pra ver se o fix nao quebra nada)

Criado 20 de julho de 2010
Ultima resposta 20 de jul. de 2010
Respostas 1
Participantes 2