问题描述
我正在学习 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 (将#修改为@)