ORMLite 不知道如何为现场航空公司存储类 Flight.scanner.modelFX.AirlineFx使用另一个类或自定义持久器

问题描述

我正在学习 JavaFx 并创建我的项目“飞行扫描仪”,我在 ORMLite 数据库的实现方面遇到了一个小问题。 我的代码如下:

控制器

public class FlightController {

private FlightModel flightModel;
private AirlineModel airlineModel;
private CityModel cityModel;

@FXML
private ComboBox<AirlineFx> airlineComboBoxAirline;

@FXML
private ComboBox<CityFx> cityComboBoxDeparture;

@FXML
private ComboBox<CityFx> cityComboBoxArrival;

@FXML
private TextField priceTextField;

@FXML
private DatePicker dateOfDeparture;

@FXML
private Button addFlightButton;

@FXML
public void initialize(){
    this.flightModel = new FlightModel();
    this.airlineModel = new AirlineModel();
    this.cityModel = new CityModel();
    try {
        this.flightModel.init();
        this.airlineModel.init();
        this.cityModel.init();
    } catch (ApplicationException e) {
        DialogsUtils.errorDialog(e.getMessage());
    }
    this.airlineComboBoxAirline.setItems(this.airlineModel.getAirlineList());
    this.cityComboBoxDeparture.setItems(this.cityModel.getCityList());
    this.cityComboBoxArrival.setItems(this.cityModel.getCityList());
    initBindings();
}

private void initBindings() {
    this.addFlightButton.disableProperty().bind(priceTextField.textProperty().isEmpty());
}

public void onActionComboBoxAirline() {
    this.airlineModel.setAirline(this.airlineComboBoxAirline.getSelectionModel().getSelectedItem());
}

public void onActionComboBoxDeparture() {
    this.cityModel.setCity(this.cityComboBoxDeparture.getSelectionModel().getSelectedItem());
}

public void onActionComboBoxArrival() {
    this.cityModel.setCity(this.cityComboBoxArrival.getSelectionModel().getSelectedItem());
}

public void addFlightOnAction() {
        try {
        this.flightModel.saveFlightInDataBase(this.airlineComboBoxAirline.getSelectionModel().getSelectedItem(),this.cityComboBoxDeparture.getSelectionModel().getSelectedItem(),this.cityComboBoxArrival.getSelectionModel().getSelectedItem(),priceTextField.getText(),dateOfDeparture.getValue());

    } catch (ApplicationException e) {
        DialogsUtils.errorDialog(e.getMessage());
    }
    priceTextField.clear();
}

} 数据库 - 模型 - 飞行

@DatabaseTable(tableName = "Flight") 公共类 Flight 实现 BaseModel {

public Flight() {
}

@DatabaseField(generatedId = true)
private int id;

@DatabaseField(columnName = "AIRLINE")
private AirlineFx airline;

@DatabaseField(columnName = "DEPARTURE",foreign = true,foreignAutoRefresh = true,foreignAutoCreate = true,canBeNull = false)
private CityFx departure;

@DatabaseField(columnName = "ARRIVAL",canBeNull = false)
private CityFx arrival;

@DatabaseField(columnName = "PRICE",canBeNull = false)
private String price;

@DatabaseField(columnName = "DATE")
private LocalDate releaseDate;

public int getId() {
    return id;
}

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

public AirlineFx getAirline() {
    return airline;
}

public void setAirline(AirlineFx airline) {
    this.airline = airline;
}

public CityFx getDeparture() {
    return departure;
}

public void setDeparture(CityFx departure) {
    this.departure = departure;
}

public CityFx getArrival() {
    return arrival;
}

public void setArrival(CityFx arrival) {
    this.arrival = arrival;
}

public String getPrice() {
    return price;
}

public void setPrice(String price) {
    this.price = price;
}

public LocalDate getReleaseDate() {
    return releaseDate;
}

public void setReleaseDate(LocalDate releaseDate) {
    this.releaseDate = releaseDate;
}

ModelFX - FlightFx 类

公共类 FlightFx {

private IntegerProperty id = new SimpleIntegerProperty();
private StringProperty departure = new SimpleStringProperty();
private StringProperty arrival = new SimpleStringProperty();
private StringProperty price = new SimpleStringProperty();
private StringProperty airline = new SimpleStringProperty();
private StringProperty date = new SimpleStringProperty();

public int getId() {
    return id.get();
}

public IntegerProperty idProperty() {
    return id;
}

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

public String getDeparture() {
    return departure.get();
}

public StringProperty departureProperty() {
    return departure;
}

public void setDeparture(String departure) {
    this.departure.set(departure);
}

public String getArrival() {
    return arrival.get();
}

public StringProperty arrivalProperty() {
    return arrival;
}

public void setArrival(String arrival) {
    this.arrival.set(arrival);
}

public String getPrice() {
    return price.get();
}

public StringProperty priceProperty() {
    return price;
}

public void setPrice(String price) {
    this.price.set(price);
}

public String getAirline() {
    return airline.get();
}

public StringProperty airlineProperty() {
    return airline;
}

public void setAirline(String airline) {
    this.airline.set(airline);
}

public String getDate() {
    return date.get();
}

public StringProperty dateProperty() {
    return date;
}

public void setDate(String date) {
    this.date.set(date);
}

}

飞行模型类

公共类 FlightModel {

private ObservableList<AirlineFx> airlineList = FXCollections.observableArrayList();
private ObjectProperty<AirlineFx> airline = new SimpleObjectProperty<>();

public void init () throws ApplicationException {
    FlightDao flightDao = new FlightDao(DbManager.getConnectionSource());
    List<Airline> airlines = flightDao.queryForAll(Airline.class);
    initAirlineList(airlines);
    DbManager.closeConnectionSource();
}

private void initAirlineList(List<Airline> airlines) {
    this.airlineList.clear();
    airlines.forEach(c->{
        AirlineFx airlineFx = ConverterAirline.converterToAirlineFx(c);
        this.airlineList.add(airlineFx);
    });
}

public void saveFlightInDataBase(AirlineFx airline,CityFx cityDeparture,CityFx cityArrival,String price,LocalDate date) throws ApplicationException {
    FlightDao flightDao = new FlightDao(DbManager.getConnectionSource());
    Flight flight = new Flight();
    flight.setAirline(airline);
    flight.setDeparture(cityDeparture);
    flight.setArrival(cityArrival);
    flight.setPrice(price);
    flight.setReleaseDate(date);
    flightDao.creatOrUpdate(flight);
    DbManager.closeConnectionSource();
    init();
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)