2016-06-14 10 views
2

Problem: Nach einer langen Recherche, wie ich Daten aus einer Datenbank mit zwei Tabellen I have found that tutorial serialisieren kann. Aber ich muss die Daten aus der Datenbank holen und ich weiß nicht, wie man die Daten mit der Datenbank verbindet. Ich habe nur nicht-relationale Proben mit einer Tabelle gefunden.Federdaten-Serialisierung mit relationalen Tabellen

Frage: Hat jemand ein Beispiel für die DAO-Klasse, um die Daten für die Merkmale aus der Datenbank zu bekommen?

JSON Struktur benötigt:

[ 
    { 
     "id":1, 
     "name":"CNC", 
     "beschreibung":"Metallverarbeitung", 
     "characteristics":[ 
     "id_characteristic":1, 
     "id_maschine":2, 
     "name":"size", 
     "description":"length of maschine", 
     "type":1 
     ] 
    } 
] 

aktuellen JSON Struktur:

[ 
    { 
     "id":1, 
     "name":"CNC", 
     "beschreibung":"Metallverarbeitung", 
     "characteristics":[ 

     ] 
}, 

... 

] 

DAO Methode (Bisher füllt nicht den Charakteristiken Array):

@Override 
    public List<Maschine> list() { 
     String selectMaschines = "SELECT * FROM maschine"; 


     List<Maschine> listMaschine = jdbcTemplate.query(selectMaschines, new RowMapper<Maschine>() { 

      @Override 
      public Maschine mapRow(ResultSet rs, int rowNum) throws SQLException { 
       Maschine aMaschine = new Maschine(); 

       aMaschine.setId(rs.getInt("Maschine_id")); 
       aMaschine.setName(rs.getString("name")); 
       aMaschine.setBeschreibung(rs.getString("beschreibung")); 


       return aMaschine; 
      } 

     }); 

     return listMaschine; 
    } 

Tabellenstruktur:

Maschine Tabelle:

maschine_id || name || description 

Charakteristische Tabelle:

id_characteristic || id_maschine || name || description || type 

Antwort

4

Wenn Sie mit Feder Daten arbeiten wollen, müssen Sie Federdatenabhängigkeit legen zum pom.xml

die n die Anmerkung für Ihre Entitäten hinzufügen:

@Entity 
public class Maschine implements Serializable { 
    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int maschine_id ; 
    private String name ; 
    private String description ; 
    @OneToMany(mappedBy="maschine") 
    private Collection<Characteristic> characteristics; 
public Maschine() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 
public int getMaschine_id() { 
    return maschine_id; 
} 
public void setMaschine_id(int maschine_id) { 
    this.maschine_id = maschine_id; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public String getDescription() { 
    return description; 
} 
public void setDescription(String description) { 
    this.description = description; 
} 

// Merkmal Einheit

@Entity 
    public class Characteristic implements Serializable { 
     @Id 
     @GeneratedValue(strategy=GenerationType.IDENTITY) 
     private int id_characteristic ; 
     private String name; 
     private String description; 
     private String type ; 
     @ManyToOne 
     @JoinColumn(name="id_machine") 
     private Maschine maschine; 
     public int getId_characteristic() { 
      return id_characteristic; 
     } 
     public void setId_characteristic(int id_characteristic) { 
      this.id_characteristic = id_characteristic; 
     } 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 
     public String getDescription() { 
      return description; 
     } 
     public void setDescription(String description) { 
      this.description = description; 
     } 
     public String getType() { 
      return type; 
     } 
     public void setType(String type) { 
      this.type = type; 
     } 
     public Maschine getMaschine() { 
      return maschine; 
     } 
     public void setMaschine(Maschine maschine) { 
      this.maschine = maschine; 
     } 
     public Characteristic() { 
      super(); 
      // TODO Auto-generated constructor stub 
     } 

    } 

Und in Ihrem DAO-Paket müssen Sie eine Schnittstelle erstellen, die JPARepository für exemple erweitert:

public interface MaschineRepository extends JpaRepository<Maschine,Integer> { 

} 

Wenn Sie dann MaschineRepository.findAll() aufrufen, erhalten Sie alle Maschinen mit ihren Eigenschaften

Frühling Datenabhängigkeit

<dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 

vergessen Sie nicht, die Datenbankkonfiguration in Ihrer application.properties hinzufügen, wenn Sie mit Federverschluß arbeiten

+0

Ihre Antwort scheint nett und korrekt zu sein, aber ich habe Probleme die importieren Anmerkung für die Maschine pojo Klasse. Ich habe org.springframework.data hinzugefügt. Unglücklicherweise schlägt Eclipse mir vor, meine eigene Anmerkung zu erstellen. Können Sie bitte Ihre Importe posten? – jublikon

+0

Ja natürlich: import java.io.Serializable; importieren Sie javax.persistence.Entity; Import javax.persistence.GeneratedValue; Import javax.persistence.GenerationType; importieren Sie javax.persistence.Id; importieren Sie javax.persistence.JoinColumn; Import javax.persistence.ManyToOne; –

+0

Es tut mir leid, aber ich habe immer noch Probleme. Mein Problem in der Klasse Maschine: Die Attributstrategie ist für den Annotationstyp Generiert nicht definiert. Eclipse rät mir, fehlende Attribute hinzuzufügen und fügt dann value = {""} hinzu, was neue Probleme erzeugt. – jublikon

Verwandte Themen