Question

I'm trying to populate a ChoiceBox with items(Countries) from a H2 database via Hibernate, but the ChoiceBox only gets populated with some strange items that don't make sense, instead of the actual countries names; something like this:

project.Forms.AddNew.DB.ItemsPOJO@5aa434

How can I get the actual countries names from the database instead of values like the above?

The classes look as follows:

The POJO class:

@Entity(name = "InitialDBItems")
public class InitialDBItemsPOJO implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int countriesListID;
    private String countriesList;

    public String getCountriesList() {
        return countriesList;
    }

    public void setCountriesList(String countriesList) {
        this.countriesList = countriesList;
    }

    public int getCountriesListID() {
        return countriesListID;
    }

    public void setCountriesListID(int countriesListID) {
        this.countriesListID = countriesListID;
    }
}

The countries array that gets persisted into the database:

public class InitialDBItems {

    static InitialDBItemsPOJO initialDBItemsPOJO = new InitialDBItemsPOJO();

    public static void persistCountries() {
        String[] countriesList = {
            "Afghanistan",
            "Albania",
            "Algeria",
            // More countries



    };
    for (String c : countriesList) {
        initialDBItemsPOJO.setCountriesList(c);
        new ManageItems().addItems(initialDBItemsPOJO);
        System.out.println(c);
    }

}

How I get the countries from the database:

public static ObservableList<InitialDBItemsPOJO> retrieveCountriesList() {

    ObservableList<InitialDBItemsPOJO> data;
    List countriesListListItems;

    String countriesListListItemsQuery = "from InitialDBItems";
    data = FXCollections.observableArrayList();

    countriesListListItems = new ManageItems().listItems(countriesListListItemsQuery);

    for (Iterator iterator = countriesListListItems.iterator(); iterator.hasNext();) {
        InitialDBItemsPOJO countriesListListItemsIt = (InitialDBItemsPOJO) iterator.next();

        data.add(countriesListListItemsIt);
    }
    return data;
}

}

Hope you can help. Thank you all in advance.

Was it helpful?

Solution

project.Forms.AddNew.DB.ItemsPOJO@5aa434 is the value of the default toString(); of your entity InitialDBItemsPOJO an easy work around is to override it

  @Entity(name = "InitialDBItems")

public class InitialDBItemsPOJO implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int countriesListID;
private String countriesList;

public String getCountriesList() {
    return countriesList;
}

public void setCountriesList(String countriesList) {
    this.countriesList = countriesList;
}

public int getCountriesListID() {
    return countriesListID;
}

public void setCountriesListID(int countriesListID) {
    this.countriesListID = countriesListID;
}
public String toString(){
    return countriesList;
}

}

or

public static ObservableList retrieveCountriesList() {

ObservableList<InitialDBItemsPOJO> data;
List countriesListListItems;

String countriesListListItemsQuery = "from InitialDBItems";
data = FXCollections.observableArrayList();

countriesListListItems = new ManageItems().listItems(countriesListListItemsQuery);

for (Iterator iterator = countriesListListItems.iterator(); iterator.hasNext();) {
    InitialDBItemsPOJO countriesListListItemsIt = (InitialDBItemsPOJO) iterator.next();

    data.add(countriesListListItemsIt.getCountriesList());
}
return data;

}

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top