2017-05-30 19 views
0

データベースの3つのテーブルの内容をifに使用するArrayListとして返すメソッドを作成しようとしています。私は次のコードを持っています: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; 
    } 

私は "ArrayFromDatabase"の内容を正確にはわかりません。あなたはそれを教えてくれますか?たとえば、これは私のエンティティクラスの武器です。

/* 
* 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 + " ]"; 
    } 

} 

ありがとうございました!私はあなたの質問から理解した内容から、

+0

私は本当にこのアプローチが嫌いです。これらの名前付きクエリを使用して、武器や薬などのarrayListを取得する必要があります。とにかく、なぜこのArrayFromDatabaseを埋め込むコードを追加しないのですか? – Guilherme

+0

JPA/Hibernate/EclipseLinkについて知っていますか?そうでない場合は、使用する前に技術を学ぶ必要があります。 –

+0

はい、私は知っていますが、私はこのソリューションを使用する必要があります。それがどうなるか知っていますか? –

答えて

0

はあなたが別のテーブルからのデータすなわち武器、アーマー、一部は結果を得るために休止状態

に対応するクラスを持つ必要があるということです、あなたができることは

    です
  1. はアーマーやポーションのため
  2. リストに移入
  3. (Hibernateはオブジェクトの形式でデータを与える使用して)ステップ1を繰り返し& 2を武器テーブルからデータを取得し、あまりにも
+0

アドバイスをいただきありがとうございます。正確にどのように表示されるか教えてください。 –

関連する問題