JTable + Genesis + Hibernate

Ola a todos,

Estou tentando usar o Genesis, tenho um form onde e’ carregado os dados de uma tabela, segui alguns tutorias porem nao funcionou, e’ carregado somente o nome das colunas, deixei o sql_show habilitado no Hibernate e mostra a consulta quando chamo a tela porem nao carrega os dados, vejam o meu codigo:

Bean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.gvt.suporte.model;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 *
 * @author Paulo
 */
@Entity()
@Table(name="CITY")
public class City implements Serializable {
    
    @Id()
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    
    @Column(name="NAME", nullable=false)
    private String name;
    
    @Column(name="SYMBOL", nullable=false, length=4)
    private String symbol;
    
    @Column(name="COORDINATOR", nullable=false, length=150)
    private String coordinator;
    
    @Column(name="MAIL_COORDINATOR", nullable=false, length=100)
    private String mailCoordinator;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSymbol() {
        return symbol;
    }

    public void setSymbol(String symbol) {
        this.symbol = symbol;
    }

    public String getCoordinator() {
        return coordinator;
    }

    public void setCoordinator(String coordinator) {
        this.coordinator = coordinator;
    }

    public String getMailCoordinator() {
        return mailCoordinator;
    }

    public void setMailCoordinator(String mailCoordinator) {
        this.mailCoordinator = mailCoordinator;
    }
    
}

Form

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.gvt.suporteatividades.form;

import br.com.gvt.suporte.dao.Dao;
import br.com.gvt.suporte.dao.GenericHibernateDao;
import br.com.gvt.suporte.hibernate.HibernateFactory;
import br.com.gvt.suporte.model.City;
import java.util.List;
import net.java.dev.genesis.annotation.Form;

/**
 *
 * @author Paulo
 */
@Form
public class FormCity {
    private Dao dao = new GenericHibernateDao((HibernateFactory.getSession()), City.class);
    private City city;

    public City getCity() {
        return city;
    }

    public void setCity(City city) {
        this.city = city;
    }
    
    
    public List getCitys(){
        List<City> citys = this.dao.searchAll();
        return citys;
    }

}

View (interface grafica usando swing. Vou postar somente trecho do codigo que interessa)


private SwingBinder binder = new SwingBinder(this, new br.com.gvt.suporteatividades.form.FormCity());    

   
    /** Creates new form FormCity */
    public FormTest(java.awt.Frame parent, boolean modal) {
        super(parent, modal);        
        binder.bind();
        initComponents();
       
        .........
        /Metodo initComponents() - Instancacao da JTable
         tableData = SwingFactory.createTable(binder, "city",
            new String[] {"id", "name", "symbol", "coordinator", "mailCoordinator" },
            new String[] {"Codigo", "Nome", "Sigla", "Coordenador", "E-mail" });

Olá,
no seu form, o método getCitys deve estar anotado com @DataProvider(objectField=“nomeCampoObjeto”) e binder.bind() deve estar depois do método initComponents. Isso deve resolver, qualquer estamos por ai.
Para mais detalhes, https://genesis.dev.java.net/nonav/3.1-RC2/maven-site/pt-BR/populating_with_dataproviders.html

Outra coisa, você pode ter respostas mais rápidas na lista do próprio genesis.

[]'s

Kra,

O metodo binder.bind esta sendo chamado antes do metodo intComponents. Em relacao ao DataProvider, ja coloquei so que da erro nem carrega a tela e conforme o Mister M nao precisa usa-lo pois o genesis ja entende.

[quote=pauloperes]Kra,

O metodo binder.bind esta sendo chamado antes do metodo intComponents. Em relacao ao DataProvider, ja coloquei so que da erro nem carrega a tela e conforme o Mister M nao precisa usa-lo pois o genesis ja entende.[/quote]
Cara,
faça como eu disso, o bind() depois do initComponets(), bem como anote o método como @DataProvider. Eu não testei na minha máquina, mas isto deve resolver seu problema. BTW, por onde o Michael te respondeu isso?

[]'s

hmichel,

Peguei a resposta em um topico aqui do forum mesmo.

Kra,

Desculpa, acho que tava com muito sono ontem, por isso entendi errado o lance do bind

hmichel,

Testei como vc me falou, colocando o método bind apos o initComponentes, porém continou da mesma forma, não carregou os dados. Para efeito de testes utilizei a anotação @DataProvider, veja o que ocorre:

java.lang.IllegalArgumentException: @DataProvider cannot be used to annotate a property, maybe removing the get prefix from the method will fix it (at member br.com.gvt.suporteatividades.form.FormCity:citys)

Interessante, a minha anotação o objectField esta como city e não citys.

Att

O método anotado com @DataProvider não pode ser um getter, utilize um outro nome como populateCities().

[]'s

Grande dica!!!

Funcionou, agora pintou as outras duvidas que vou postar daqui a pouco no forum.

Hmichel, valeu mesmo!!!

Eu sugiro vc postar suas dúvidas de genesis, na própria lista.

[]'s

hmichel,

Vou seguir a tua dica sobre postar na lista do genesis.

Valeu,

Paulo