Hibernate validator - InvalidStateException

olá pessoal,

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?

pq não me mostra a mensagem?

@Min(value=1, message=“minimo 1”)
private int codigo;

Post aqui sua classe e sua view, para poder te auxiliar melhor.

Valew.

oi, Marcelo, aí vai…
valeu!
PS: estou usando genesis tb, algumas anotações são dele…

[code]public class MarcaDao extends Dao {

    //private static final ClassValidator marcaValidator = new ClassValidator( Marca.class,ResourceBundle.getBundle("messages", Locale.ENGLISH) );
    private static final ClassValidator marcaValidator = new ClassValidator( Marca.class);
    
public MarcaDao(Session session) {
	// Pega todos genericos.
	super(session, Marca.class);
    }
    
    public void gravar(Marca marca) throws HibernateException {
        InvalidValue[] validationMessages = marcaValidator.getInvalidValues(marca);

        this.getSession().beginTransaction();
        super.salva(marca);
        this.getSession().getTransaction().commit();
    }
    
    public void alterar(Marca marca) throws HibernateException {
        InvalidValue[] validationMessages = marcaValidator.getInvalidValues(marca);
        this.getSession().beginTransaction();
        super.altera(marca);
        this.getSession().getTransaction().commit();
    }
    
    public void excluir(Marca marca) throws HibernateException {
        marca = pesquisar(marca.getCodigo());
        if (marca != null) {
            this.getSession().beginTransaction();
            super.deleta(marca);
            this.getSession().getTransaction().commit();
        } 
    }
    
    public Marca pesquisar(int codigo) throws HibernateException {
        this.getSession().beginTransaction();
        Criteria criteria = this.getSession().createCriteria(Marca.class);
        criteria.add(Restrictions.eq("codigo",codigo));
        Marca marca = (Marca) criteria.uniqueResult();
        this.getSession().getTransaction().commit();
        return marca;
    }

}[/code]

[code]
@Form
@Entity
public class Marca implements Serializable, Navegavel {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id_marca;

@NotNull
@Min(value=1, message="minimo 1")
private int codigo;

@NotNull(message="não pode ser nulo!")
private String descricao;

/** Creates a new instance of Marca */

public Marca(int codigo, String descricao) {
    setCodigo(codigo);
    setDescricao(descricao);
}

public Marca() {
}

public Long getId_marca() {
    return this.id_marca;
}

public void setId_marca(Long id) {
    this.id_marca = id;
}


public int getCodigo() {
    return codigo;
}

public void setCodigo(int codigo) {
    this.codigo = codigo;
}

public String getDescricao() {
    return descricao;
}

public void setDescricao(String descricao) {
    this.descricao = descricao;
}

@Action
public void limpar() {
    setCodigo(0);
    setDescricao(null);
}
 
@Action 
public void gravar() {
    Session session = HibernateUtil.getCurrentSession();
    MarcaDao marcaDao = new MarcaDao(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 (HibernateException ex) {
        HibernateUtil.getCurrentSession().getTransaction().rollback();
        MsgUtils.showError(ex.getMessage(1));
    } finally {
        HibernateUtil.closeCurrentSession();
    }
    limpar();
}[/code]

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)

desculpa,
aí vai a view…

[code] public FrmMarca() {
initComponents();
setExtendedState(MAXIMIZED_BOTH);

    //Cria uma instancia de marca
    Marca marca = new Marca();
    
    //adiciona o rodapé
    NavegadorRodape rodape = new NavegadorRodape();
    paneRodape.add(rodape);
    
    //adiciona o cabeçalho
    Cabecalho cabecalho = new Cabecalho("Cadastro de Marca");
    paneCabecalho.add(cabecalho);
    
    //efetua o binding
    SwingBinder binder = new SwingBinder(this, marca);
    binder.bind();
    
    //prepara a tela para edição
    this.limpar();

}

/*
* Para limpar os atributos numericos e colocar o foco no campo codigo
*/
@BeforeAction
@AfterAction({“gravar”, “excluir”})
public void limpar() {
txtcodigo.requestFocus();
txtcodigo.setText("");
// txtdescricao.setText("");
}

@BeforeAction("excluir")
public boolean confirmaExclusao() {
    return MsgUtils.showMsgConfirmaExclusao(this);
}

    
 /**
 * @param args the command line arguments
 */
public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new FrmMarca().setVisible(true);
            StartupHelper helper = new StartupHelper();
            //StartupHelper helper = new StartupHelper(new Locale("pt", "BR"), "dd/MM/yyyy");
            helper.setRunNoopCommand(false);
            helper.setLoadValidatorRules(false);
            helper.initialize();
        }
    });
}

[/code]

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?

[quote=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?

[/quote]

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.

Desculpas !!!