我如何使用数据库数据(来自名称Query的对象)填充TableView



这是我的 tableview

 @FXML
    private TableView<Donante> tblDonantes;
    @FXML
    private TableColumn<Donante, String> colApellido = new TableColumn<>("Apellido");
    @FXML
    private TableColumn<Donante, String> colNombre = new TableColumn<>("Nombre");
    @FXML
    private TableColumn<Donante, Long> colCUILCUIT = new TableColumn<>("CUIL");
    @FXML
    private TableColumn<Donante, LocalDate> colFechaExtraccion = new TableColumn<>("Fecha Extracción");

我的

            tblDonantes.setPlaceholder(new Label("No se encontraron Donantes"));
            colApellido.setCellValueFactory(new PropertyValueFactory<Donante, String>("apellido"));
            colApellido.setMinWidth(250);
            colNombre.setCellValueFactory(new PropertyValueFactory<Donante, String>("nombre"));
            colNombre.setMinWidth(250);
            colCUILCUIT.setCellValueFactory(new PropertyValueFactory<Donante, Long>("cuil"));
            colCUILCUIT.setMinWidth(100);
            colFechaExtraccion.setCellValueFactory(new PropertyValueFactory<Donante, LocalDate>("fecha"));
            colFechaExtraccion.setMinWidth(150);t
tblDonantes.getColumns().addAll(colApellido, colNombre, colCUILCUIT, colFechaExtraccion);

此查询Query buscarDonantes = AreaPrincipal.em.createNamedQuery("Donante.buscarSinDonaciones");返回此图像捐赠者列表我需要用捐赠者列表填充我的tabeview(tbldonantes)...我尝试了一下,但是我什么也看不见...

ObservableList<Donante> listaDonantes = FXCollections.observableArrayList(buscarDonantes.getResultList());
            tblDonantes.setItems(listaDonantes);

我也尝试了...

List<Object[]> resultList = (List<Object[]>) buscarDonantes.getResultList();    
for (int i = 0; i < resultList.size(); i++) {
      System.out.print(resultList.get(i)[0] + resultList.get(i)[1] + resultList.get(i)[2] + resultList.get(i)[3]);
            }

当然,我在控制台中看到了数据...但是我需要我的餐桌视图...呢?tia ... Ernesto

在回答我自己的问题中(谢谢Chris at Komposta.net): FIRST :创建一个"通用"模型...

package ar.dignitas.balthus.model;
import java.util.ArrayList;
import java.util.Arrays;
public class Generica {
    private ArrayList<Object> data;
    public Generica(Object... args) {
        data = new ArrayList<>(Arrays.asList(args));
    }
    public Object get0() {
        return data.get(0);
    }
    public Object get1() {
        return data.get(1);
    }
    public Object get2() {
        return data.get(2);
    }
    public Object get3() {
        return data.get(3);
    }
    public Object get4() {
        return data.get(4);
    }
    public Object get5() {
        return data.get(5);
    }
    @Override
    public String toString() {
        return data.toString();
    }  
}

第二: tableview Little Bit Modified

   @FXML
   private TableView<Generica> tblDonantes;
   @FXML
   private TableColumn<Generica, String> colApellido = new TableColumn<>("Apellido");
   @FXML
   private TableColumn<Generica, String> colNombre = new TableColumn<>("Nombre");
   @FXML
   private TableColumn<Generica, String> colCUILCUIT = new TableColumn<>("CUIL");
   @FXML
   private TableColumn<Generica, String> colFechaExtraccion = new TableColumn<>("Fecha 
   Extracción");

第三:单元列!

colCUILCUIT.setCellValueFactory(cellData -> new 
    SimpleStringProperty(cellData.getValue().get0().toString()));
colCUILCUIT.setMinWidth(100);
colApellido.setCellValueFactory(cellData -> new 
    SimpleStringProperty(cellData.getValue().get1().toString()));
colApellido.setMinWidth(250);
colNombre.setCellValueFactory(cellData -> new 
    SimpleStringProperty(cellData.getValue().get2().toString()));       
colNombre.setMinWidth(250);
colFechaExtraccion.setCellValueFactory(cellData -> new 
    SimpleStringProperty(cellData.getValue().get3().toString()));
colFechaExtraccion.setMinWidth(150);
tblDonantes.getColumns().addAll(colCUILCUIT, colApellido, colNombre, colFechaExtraccion);

第四...最后:

    btnBuscarTodos.setOnAction(event -> {
                limpiarColumnasTblDonantes();
            /*****************************************************************************
* The SELECT clause queries more than one column or entity, the 
* results are aggregated in an object array (Object[]) in the java.util.List 
* returned by getResultList( ).     
*****************************************************************************/
    Query buscarDonantes = AreaPrincipal.em.createNamedQuery("Donante.buscarSinDonaciones");
    List<Object[]> listaDonantes = FXCollections.observableArrayList(buscarDonantes.getResultList());
    ObservableList<Generica> data = FXCollections.observableArrayList();    
        for (Object[] filaRad : listaDonantes) { //for para recorrer las filas
                    data.add(new Generica(filaRad));
                }
                tblDonantes.setItems(data);     
            });

我不知道是实现这一目标的更好方法...目前,此代码有效。有了更多的学习时间,我可以改善它。

@ernesto