2017-12-01 2 views
0

Ich habe ein Problem mit meinem Vaadin Grid. Ich kann leicht eine neu erstellte Liste der Objekte wie hier festgelegt:vaadin Gitter zeigt keine Objektdaten (jpa)

private Grid<Objective> test = new Grid<>(Objective.class); 

List<Objective> people = Arrays.asList(
     new Objective("Nicolaus Copernicus","lol", 1), 
     new Objective("Santaklaus Copernicus","qwr", 2), 
     new Objective("Omarklaus Copernicus","asdf", 3)); 

test.setColumns("name", "difficulty"); 
test.setItems(sampleData); 

Das sieht aus wie pic1 und es funktioniert.

Aber wenn ich meine Liste der Ziele anzeigen möchte (gespeichert über JPA in Bezug auf ein Patientenmodell) funktioniert es nicht (zeigt nichts). Die Größe() ist, dass ich das Ziel "auswählen kann" bc lazy loading ist Standard. Was kann ich tun? Getestet so viele Dinge, aber nichts funktioniert.

@Override 
public void fillObjectiveList(ObjectiveList objectiveList) { 
    test.setColumns("name", "difficulty"); 

    List<Objective> realData = objectiveList.getObjectives(); 
    realData.size(); 
    test.setItems(sampleData); 

} 

ObjectiveList Klasse:

@Entity 
public class ObjectiveList { 

    .... 

    @OneToMany(mappedBy= "objList", cascade = CascadeType.ALL) 
    private List<Objective> objectives = new ArrayList<Objective>(); 

    .... 

    public List<Objective> getObjectives() { 
     return objectives; 
    } 

Das funktioniert gut, so kann ich die Attribute aus der Liste greifen.

realData.get(0).getName(); 

wird alle Daten über den Patienten mit OneToOne oder ManyToOne verbunden usw. Patienten OneToOne ObjectiveList OneToMany Ziel

Kann mir jemand helfen? Ich habe den Lochcode nicht eingefügt, bc ist ziemlich groß. Wenn Sie mehr Code benötigen, sagen Sie einfach, welcher Teil. Vielen Dank!

edit1:

eine Differenz i bemerkt ist die Klammer, wenn ich die Liste SYSOUT: manualy erstellt Liste

[ch.bfh.btx8081.w2017.blue.sophobia.model.Objective @ 6ad2b61e, [email protected], [email protected]]

JPA Liste erstellt

{[[email protected], [email protected]]}

+1

In 'fillObjectiveList' haben Sie einen Tippfehler? Sie rufen test.setItems mit dem Parameter 'sampleData' auf, sollten aber mit der Variable' realData' aufrufen? – Mika

+0

Danke für den Kommentar, aber es ist gelöst. ich musste 'fetch = FetchType.EAGER' zu meiner objectiveList hinzufügen. :) – Thandor

Antwort

0

Versuchen Sie folgendes:

grid.addColumn(Objective::getName).setCaption("Name"); 
grid.addColumn(Objective::getDifficulty).setCaption("Difficulty"); 
+0

Danke für den Kommentar, aber es ist gelöst. ich musste 'fetch = FetchType.EAGER' zu meiner objectiveList hinzufügen. :) – Thandor

0

Es aufgelöst wird. Ich musste 'fetch = FetchType.EAGER' zu meiner objektiven Liste hinzufügen.

Verwandte Themen