2013-04-07 21 views
5

Jestem nowicjuszem w JavaFX i staram się przekształcić starą aplikację Swing w JavaFX.
Używam również JPA (z implementacją EclipseLink) do zapisywania/pobierania danych.
Tak więc zdefiniowałem kilka komentarzy POJO.

Tutaj poniżej mój uwagami POJO:JavaFX, TableView i JPA

import java.io.Serializable; 
import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.FetchType; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.ManyToOne; 
import javax.persistence.NamedQueries; 
import javax.persistence.NamedQuery; 
import javax.persistence.Table; 
import javax.persistence.Transient; 

/** 
* 
* @author alex 
*/ 
@Entity 
@Table(name = "materiale", catalog = "elledia", schema = "") 
public class Materiale implements Serializable { 
    @Transient 
    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "id") 
    private Long id; 

    @Basic(optional = false) 
    @Column(name = "colata") 
    private String colata; 

    @Basic(optional = false) 
    @Column(name = "dimensione") 
    private String dimensione; 

    @Basic(optional = false) 
    @Column(name = "specifica") 
    private String specifica; 

    @Basic(optional = false) 
    @Column(name = "unita_misura") 
    private String unitaMisura; 

    @Column(name = "version") 
    private Integer version; 

    @ManyToOne (fetch = FetchType.LAZY) 
    @JoinColumn (name = "certificato_id") 
    private Certificato certificato; 

    public Materiale(Long id, String colata, String dimensione, String specifica, String unitaMisura, Certificato certificato) { 
    this.id = id; 
    this.colata = colata; 
    this.dimensione = dimensione; 
    this.specifica = specifica; 
    this.unitaMisura = unitaMisura; 
    this.certificato = certificato; 
    } 

    public Long getId() { 
    return id; 
    } 

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

    public String getColata() { 
    return colata; 
    } 

    public void setColata(String colata) { 
    String oldColata = this.colata; 
    this.colata = colata; 
    } 

    public String getDimensione() { 
    return dimensione; 
    } 

    public void setDimensione(String dimensione) { 
    String oldDimensione = this.dimensione; 
    this.dimensione = dimensione; 
    } 

    public String getSpecifica() { 
    return specifica; 
    } 

    public void setSpecifica(String specifica) { 
    String oldSpecifica = this.specifica; 
    this.specifica = specifica; 
    } 

    public String getUnitaMisura() { 
    return unitaMisura; 
    } 

    public void setUnitaMisura(String unitaMisura) { 
    String oldUnitaMisura = this.unitaMisura; 
    this.unitaMisura = unitaMisura; 
    } 

    public Integer getVersion() { 
    return version; 
    } 

    public void setVersion(Integer version) { 
    Integer oldVersion = this.version; 
    this.version = version; 
    } 

    public Certificato getCertificato() { 
    return certificato; 
    } 

    public void setCertificato(Certificato certificato) { 
    Certificato oldCertificato = this.certificato; 
    this.certificato = certificato; 
    } 

    @Override 
    public int hashCode() { 
    int hash = 0; 
    hash += (id != null ? id.hashCode() : 0); 
    return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
    // TODO: Warning - this method won't work in the case the id fields are not set 
    if (!(object instanceof Materiale)) { 
     return false; 
    } 
    Materiale other = (Materiale) object; 
    if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { 
     return false; 
    } 
    return true; 
    } 

    @Override 
    public String toString() { 
    return "com.alessandrodonato.elledia.certificati.gui.Materiale[ id=" + id + " ]"; 
    } 

} 

Mam pewne problemy z TableViewcontrol:

  • ok, czytałem o tym, jak różne stanowiska wiążą POJO do Tableview.
  • ok, muszę zdefiniować ObservableList i powiązać go z TableView, aby wypełnić i zaktualizować.
  • ale zdefiniowanie go mam użyć SimpleStringProperty zamiast sznurka w moich właściwości POJO i adnotacji nie działać z tym ...

Każdy pomysł?

Odpowiedz

1

TiwulFX zapewnia JavaFX niestandardowe elementy specjalnie zaprojektowane do pracy z javaPOJO obiektów.

+0

Dzięki, zrobię to! – AlexD

+0

"Obiekty Java POJO" - mów o redundantnej nadmiarowości! : D – ryvantage

-1
public class MaterialeProperty { 
    private Materiale materiale; 

    public MaterialeProperty (Materiale materiale) { 

     this.materiale= materiale; 

     this.setId(materiale.getId()); 

    } 

    private LongProperty id = new SimpleLongProperty() { 

     public void set(long l) { 
      super.set(l); 
      materiale.setId(l); 
     } 
    }; 

    public final Long getId() { 
     return id.get(); 
    } 

    public final void setId(Long value) { 
     id.set(value); 
    } 

    public LongProperty idProperty() { 
     return id; 
    } 

    .... 

} 
+0

co próbujesz wyjaśnić? – tarrsalah

+0

Pytanie rzeczywiście dotyczyło tego, jak używać podmiotu jako POJO, tak to zrobić, przez zapakowanie. – user2259890

0

Działa dla mnie bez zmiany mojego POJO.

TableColumn coluna1 = new TableColumn("Nome"); 
TableColumn coluna2 = new TableColumn("Álbum"); 
TableColumn coluna3 = new TableColumn("Imagem"); 
TableColumn coluna4 = new TableColumn("Descrição"); 
TableColumn coluna5 = new TableColumn("Tags"); 

coluna1.setCellValueFactory(
    new PropertyValueFactory<>("nome") 
); 
coluna2.setCellValueFactory(
    new PropertyValueFactory<>("album") 
); 

... 

tabelaItens.getColumns().addAll(coluna1, coluna2, coluna3, coluna4, coluna5); 

tabelaItens.setItems(FXCollections.observableArrayList(itens)); 

POJO:

@Entity 
public class Item implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Long id; 

    @ManyToOne 
    private Album album; 

    @Column(name = "nome") 
    private String nome; 

    @Temporal(javax.persistence.TemporalType.TIMESTAMP) 
    @Column(name = "data_criacao") 
    private Calendar dataCriacao; 

    @Column(name = "data_imagem") 
    @Temporal(javax.persistence.TemporalType.TIMESTAMP) 
    private Calendar dataImagem; 

    @Lob 
    @Basic(fetch = FetchType.LAZY) 
    @Column(name = "imagem") 
    private byte[] imagem; 

    @Column(name = "tipo_imagem") 
    private String tipoImagem; 

    @Column(name = "descricao") 
    private String descricao; 

    @Column(name = "tags") 
    private String tags; 

    ... 
}