estou tentando usar este framework…
adicionei os jars deste na minha aplicação, tenho q fazer algo mais pra começar a usar?
coloquei a anotação @NotNull no atributo da minha classe e qdo executo dá InvalidStateException…
o q estou fazendo de errado?
copiei o DefaultValidatorMessages.properties no pacote padrão do meu projeto(uso NetBeans),
instanciei o ClassValidator, chamei o getInvalidValues…
eu to viajando? é por aí mesmo? e o q faço pra resolver o erro em questão?
estou seguindo o tutorial do hibernate.org, mas estou com dificuldades… alguém pra dar uma força?
J
Jjap
pq não me mostra a mensagem?
@Min(value=1, message=“minimo 1”)
private int codigo;
M
marceloplis
Post aqui sua classe e sua view, para poder te auxiliar melhor.
Valew.
J
Jjap
oi, Marcelo, aí vai...
valeu!
PS: estou usando genesis tb, algumas anotações são dele...
publicclassMarcaDaoextendsDao<Marca>{//private static final ClassValidator marcaValidator = new ClassValidator( Marca.class,ResourceBundle.getBundle("messages", Locale.ENGLISH) );privatestaticfinalClassValidatormarcaValidator=newClassValidator(Marca.class);publicMarcaDao(Sessionsession){// Pega todos genericos.super(session,Marca.class);}publicvoidgravar(Marcamarca)throwsHibernateException{InvalidValue[]validationMessages=marcaValidator.getInvalidValues(marca);this.getSession().beginTransaction();super.salva(marca);this.getSession().getTransaction().commit();}publicvoidalterar(Marcamarca)throwsHibernateException{InvalidValue[]validationMessages=marcaValidator.getInvalidValues(marca);this.getSession().beginTransaction();super.altera(marca);this.getSession().getTransaction().commit();}publicvoidexcluir(Marcamarca)throwsHibernateException{marca=pesquisar(marca.getCodigo());if(marca!=null){this.getSession().beginTransaction();super.deleta(marca);this.getSession().getTransaction().commit();}}publicMarcapesquisar(intcodigo)throwsHibernateException{this.getSession().beginTransaction();Criteriacriteria=this.getSession().createCriteria(Marca.class);criteria.add(Restrictions.eq("codigo",codigo));Marcamarca=(Marca)criteria.uniqueResult();this.getSession().getTransaction().commit();returnmarca;}}
@Form@EntitypublicclassMarcaimplementsSerializable,Navegavel{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)privateLongid_marca;@NotNull@Min(value=1,message="minimo 1")privateintcodigo;@NotNull(message="não pode ser nulo!")privateStringdescricao;/** Creates a new instance of Marca */publicMarca(intcodigo,Stringdescricao){setCodigo(codigo);setDescricao(descricao);}publicMarca(){}publicLonggetId_marca(){returnthis.id_marca;}publicvoidsetId_marca(Longid){this.id_marca=id;}publicintgetCodigo(){returncodigo;}publicvoidsetCodigo(intcodigo){this.codigo=codigo;}publicStringgetDescricao(){returndescricao;}publicvoidsetDescricao(Stringdescricao){this.descricao=descricao;}@Actionpublicvoidlimpar(){setCodigo(0);setDescricao(null);}@Actionpublicvoidgravar(){Sessionsession=HibernateUtil.getCurrentSession();MarcaDaomarcaDao=newMarcaDao(session);try{if(marcaDao.pesquisar(getCodigo())==null){marcaDao.gravar(this);MsgUtils.showGravadoSucesso();}else{if(MsgUtils.showMsgConfirmaAlteracao()){setId_marca(marcaDao.pesquisar(getCodigo()).getId_marca());marcaDao.alterar(this);MsgUtils.showMsgAlteracaoSucesso();}}}catch(HibernateExceptionex){HibernateUtil.getCurrentSession().getTransaction().rollback();MsgUtils.showError(ex.getMessage(1));}finally{HibernateUtil.closeCurrentSession();}limpar();}
J
Jjap
essa é uma parte dos erros q dá…
org.hibernate.validator.InvalidStateException: validation failed for: net.cpadi.model.Marca
at org.hibernate.validator.event.ValidateEventListener.validate(ValidateEventListener.java:148)
at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java:172)
at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:119)
at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:42)
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.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:172)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
J
Jjap
desculpa,
aí vai a view...
publicFrmMarca(){initComponents();setExtendedState(MAXIMIZED_BOTH);//Cria uma instancia de marcaMarcamarca=newMarca();//adiciona o rodapéNavegadorRodaperodape=newNavegadorRodape();paneRodape.add(rodape);//adiciona o cabeçalhoCabecalhocabecalho=newCabecalho("Cadastro de Marca");paneCabecalho.add(cabecalho);//efetua o bindingSwingBinderbinder=newSwingBinder(this,marca);binder.bind();//prepara a tela para ediçãothis.limpar();}/* * Para limpar os atributos numericos e colocar o foco no campo codigo */@BeforeAction@AfterAction({"gravar","excluir"})publicvoidlimpar(){txtcodigo.requestFocus();txtcodigo.setText("");// txtdescricao.setText("");}@BeforeAction("excluir")publicbooleanconfirmaExclusao(){returnMsgUtils.showMsgConfirmaExclusao(this);}/** * @param args the command line arguments */publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newFrmMarca().setVisible(true);StartupHelperhelper=newStartupHelper();//StartupHelper helper = new StartupHelper(new Locale("pt", "BR"), "dd/MM/yyyy");helper.setRunNoopCommand(false);helper.setLoadValidatorRules(false);helper.initialize();}});}
J
Jjap
eu mesma tenho q tratar a exceção no try-catch??
o validator não deveria abrir uma optionPane com a mensagem q coloquei na anotação?
M
marceloplis
Jjap:
eu mesma tenho q tratar a exceção no try-catch??
o validator não deveria abrir uma optionPane com a mensagem q coloquei na anotação?
Primeiramente, desculpas pela demora em responder, é que estou bem atarefado !!!
Bem, eu só desenvolvo para Web, não sei se funciona igual, mais na Web em algum lugar eu tenho que comparar se o hibernate retornou algum erro na validação e exibir essas mensagens. Será que vc não teria que criar algum objeto que retornasse as mensagens ?? Infelizmente não vou poder te ajudar, mas dá um googleada e veja o que acha.