2017-05-30 6 views
0

Ich versuche, eine Methode zu erstellen, die den Inhalt von drei Tabellen aus der Datenbank als eine ArrayList zurückgibt, die für ein If verwendet. Ich habe folgenden Code:ArrayList <Item> getDbItems

public ArrayList<Item> getDbItems() 
    { 
     ArrayList<Item> list = new ArrayList<>(); 

     for (int i = 0; i < ArrayFromDatabase.length(); i++) 
     { 
     if (ArrayList<Item>= new ArrayList<>()[i].type == WEAPON_ID) 
     { 
      list.add(new Items.Weapon(ArrayFromDatabase[i].id, ArrayFromDatabase[i].name,/*..........*/)) 
     } 
     if (ArrayFromDatabase[i].type == ARMOR_ID) 
     { 
      list.add(new Items.Armor(), /*............*/) 
     } 
     if (ArrayFromDatabase[i].type == POTION_ID) 
     { 
      list.add(new Items.Potion(), /*............*/) 
     } 
     } 
     return list; 
    } 

Ich weiß nicht genau, was ich "ArrayFromDatabase" habe. Kannst du es mir sagen? Zum Beispiel ist dies meine Entity-Klasse Waffe:

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package com.dke.ps.Tables; 

import java.io.Serializable; 
import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.NamedQueries; 
import javax.persistence.NamedQuery; 
import javax.persistence.OneToOne; 
import javax.persistence.Table; 
import javax.xml.bind.annotation.XmlRootElement; 

/** 
* 
* @author michal 
*/ 
@Entity 
@Table(name = "weapon") 
@XmlRootElement 
@NamedQueries({ 
    @NamedQuery(name = "Weapon.findAll", query = "SELECT w FROM Weapon w") 
    , @NamedQuery(name = "Weapon.findByItemid", query = "SELECT w FROM Weapon w WHERE w.itemid = :itemid") 
    , @NamedQuery(name = "Weapon.findByName", query = "SELECT w FROM Weapon w WHERE w.name = :name") 
    , @NamedQuery(name = "Weapon.findByDescription", query = "SELECT w FROM Weapon w WHERE w.description = :description") 
    , @NamedQuery(name = "Weapon.findByIcon", query = "SELECT w FROM Weapon w WHERE w.icon = :icon") 
    , @NamedQuery(name = "Weapon.findByType", query = "SELECT w FROM Weapon w WHERE w.type = :type") 
    , @NamedQuery(name = "Weapon.findByPower", query = "SELECT w FROM Weapon w WHERE w.power = :power") 
    , @NamedQuery(name = "Weapon.findByPrice", query = "SELECT w FROM Weapon w WHERE w.price = :price")}) 
public class Weapon implements Serializable { 

    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Basic(optional = false) 
    @Column(name = "itemid") 
    private Integer itemid; 
    @Column(name = "name") 
    private String name; 
    @Column(name = "description") 
    private String description; 
    @Column(name = "icon") 
    private String icon; 
    @Column(name = "type") 
    private Integer type; 
    @Column(name = "power") 
    private Integer power; 
    @Column(name = "price") 
    private Integer price; 
    @JoinColumn(name = "itemid", referencedColumnName = "id", insertable = false, updatable = false) 
    @OneToOne(optional = false) 
    private ItemsId itemsId; 

    public Weapon() { 
    } 

    public Weapon(Integer itemid) { 
     this.itemid = itemid; 
    } 

    public Integer getItemid() { 
     return itemid; 
    } 

    public void setItemid(Integer itemid) { 
     this.itemid = itemid; 
    } 

    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 getIcon() { 
     return icon; 
    } 

    public void setIcon(String icon) { 
     this.icon = icon; 
    } 

    public Integer getType() { 
     return type; 
    } 

    public void setType(Integer type) { 
     this.type = type; 
    } 

    public Integer getPower() { 
     return power; 
    } 

    public void setPower(Integer power) { 
     this.power = power; 
    } 

    public Integer getPrice() { 
     return price; 
    } 

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

    public ItemsId getItemsId() { 
     return itemsId; 
    } 

    public void setItemsId(ItemsId itemsId) { 
     this.itemsId = itemsId; 
    } 

    @Override 
    public int hashCode() { 
     int hash = 0; 
     hash += (itemid != null ? itemid.hashCode() : 0); 
     return hash; 
    } 

    @Override 
    public boolean equals(Object object) { 
     // TODO: Warning - this method won't work in the case the id fields are not set 
     if (!(object instanceof Weapon)) { 
      return false; 
     } 
     Weapon other = (Weapon) object; 
     if ((this.itemid == null && other.itemid != null) || (this.itemid != null && !this.itemid.equals(other.itemid))) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public String toString() { 
     return "com.dke.ps.Tables.Weapon[ itemid=" + itemid + " ]"; 
    } 

} 

Vielen Dank für Ihre Hilfe!

+0

Ich mag diesen Ansatz wirklich nicht, Sie sollten diese benannten Abfragen verwenden, um Ihre ArrayList von Waffen, Tränken usw. zu erhalten. Warum fügen Sie hier nicht den Code zum Auffüllen dieser ArrayFromDatabase hinzu? – Guilherme

+0

Kennen Sie überhaupt JPA/Hibernate/EclipseLink? Wenn nicht, sollten Sie die Technik lernen, bevor Sie sie verwenden. –

+0

Ja, ich weiß, aber ich muss diese Lösung verwenden. Weißt du wie es sein wird? –

Antwort

0

Von dem, was ich aus Ihrer Frage verstanden habe ist, dass Sie benötigen, um Daten aus verschiedenen Tabellen, dh Waffe, Rüstung, Abschnitt mit entsprechenden Klassen in Hibernate

das Ergebnis zu erhalten, was Sie tun können, ist

  1. Get Daten aus Waffe Tisch (mit Hibernate werden die Daten in Form von Objekten geben)
  2. Populate in der Liste
  3. Wiederholen Sie Schritt 1 & 2 für Rüstung und Trank zu
+0

Danke für Ihren Rat, können Sie mir zeigen, wie es genau aussehen wird? –

Verwandte Themen