TableView выводит не все данные из запроса к Oracle

Создана программа, выводящая в TableView данные из SQL-запроса к Oracle (12c). Проблема в том, что некоторые данные в TableView выводятся, некоторые - нет.

  1. Класс Controller

    public class Controller extends Const{

     @FXML
     private ResourceBundle resources;
    
     @FXML
     private URL location;
    
     @FXML
     private AnchorPane podlojkaInt;
    
     @FXML
     private Button buttonClick;
    
    
     @FXML
     private TableColumn<DataModelSQL, String> columnOne;
    
     @FXML
     private TableColumn<DataModelSQL, String> columnTwo;
    
     @FXML
     private TableColumn<DataModelSQL, String> columnThree;
    
     @FXML
     private TableColumn<DataModelSQL, String> columnFour;
    
    
     @FXML
     private TableColumn<DataModelSQL, String> columnFive;
    
     @FXML
     private TableColumn<DataModelSQL, String> columnSix;
    
     @FXML
     private TableColumn<DataModelSQL, String> columnSeven;
    
    
     @FXML
     private TableView<DataModelSQL> tableShow;
    
    
     @FXML
     void initialize() {
    
    
         ObservableList<DataModelSQL> list = FXCollections.observableArrayList();
         tableShow.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
         tableShow.getSelectionModel().setCellSelectionEnabled(true);
    
    
    
         buttonClick.setOnAction(event -> {
    
             DatabBaseHandler connect = new DatabBaseHandler();
    
    
             String sql = "SELECT * FROM TABLE.NAME WHERE ID_COLUMN1 = 12 AND ID_COLUMN2 = 1234";
    
             try {
                 Statement statement = connect.getDbConnection().createStatement();
                 ResultSet resultSet = statement.executeQuery(sql);
    
    
                 while (resultSet.next()) {
    
    
                     String column3 = resultSet.getString(3);
                     System.out.println(column3);
    
    
                     list.add(new DataModelSQL(resultSet.getString(1),resultSet.getString(2),
                             resultSet.getString(3),resultSet.getString(4),
                             resultSet.getString(5),resultSet.getString(6),
                             resultSet.getString(7)));
    
                     columnOne.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("idV"));
                     columnTwo.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("idS"));
                     columnThree.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("val"));
                     columnFour.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("idUser"));
                     columnFive.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("idVParent"));
                     columnSix.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("dateAdd"));
                     columnSeven.setCellValueFactory(new PropertyValueFactory<DataModelSQL, String>("visible"));
    
    
                     tableShow.setItems(list);
    
    
    
                 }
                 resultSet.close();
                 statement.close();
    
             } catch (SQLException | ClassNotFoundException e) {
                 e.printStackTrace();
                 System.out.println(e.getMessage());
             }
         });
    
     }
    

    }

  2. Класс DataModelSQL

package sample; import javafx.beans.property.*;

//это класс для модели данных, получаемых из БД public class DataModelSQL {

private SimpleStringProperty idV;
private SimpleStringProperty idS;
private SimpleStringProperty val;
private SimpleStringProperty idUser;
private SimpleStringProperty idVParent;
private SimpleStringProperty dateAdd;
private SimpleStringProperty visible;


public DataModelSQL(String idV, String idS, String val, String idUser,
                    String idVParent, String dateAdd, String visible)
{
    this.idV = new SimpleStringProperty(idV);
    this.idS = new SimpleStringProperty(idS);
    this.val = new SimpleStringProperty(val);
    this.idUser = new SimpleStringProperty(idUser);
    this.idVParent = new SimpleStringProperty(idVParent);
    this.dateAdd = new SimpleStringProperty(dateAdd);
    this.visible = new SimpleStringProperty(visible);
}


public String getIdV()
{ return idV.get();}
public void setIdV(String value)
{ idV.set(value);}

public String getIdS()
{ return idSlv.get();}
public void setIdS(String value)
{ idSlv.set(value);}

public String getVal()
{ return val.get();}
public void setVal(String value)
{ val.set(value);}

public String getIdUser()
{ return idUser.get();}
public void setIdUser(String value)
{ idUser.set(value);}

public String getIdVParent()
{ return idVParent.get();}
public void setIdVParent(String value)
{ idVParent.set(value);}

public String getDateAdd()
{ return dateAdd.get();}
public void setDateAdd(String value)
{ dateAdd.set(value);}

public String getVisible()
{ return visible.get();}
public void setVisible(String value)
{ visible.set(value);}

}

TableView выводит результаты колонок: 2, 4, 6, 7, не выводит - 1, 3, 5. Типы данных в колонках: 1 - number 2 - number 3 - varchar2(2000) 4 - number 5 - number 6 - timestamp 7 - number

По тем колонкам, в которых данные не выводятся, вылетает ошибка, пример: Can not retrieve property 'idVParent' in PropertyValueFactory: javafx.scene.control.cell.PropertyValueFactory@b0e3501 with provided class type: class sample.DataModelSQL java.lang.IllegalStateException: Cannot read from unreadable property idVParent

Полагаю, дело в модели данных и ее работе с типах данных, так как с помощью тестового кода:

String column3 = resultSet.getString(3);
System.out.println(column3);

в цикле while, удавалось в консоль вывести значение колонки №3, которую не выводит TableView.

Вопрос: что неверно прописано в моей модели данных? Дело в типах данных, прописанных в классе-модели DataModelSQL или в неверном обращении к ней из класса Controller?

Спасибо.


Ответы (0 шт):