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 + " ]";
}
}
ありがとうございました!私はあなたの質問から理解した内容から、
私は本当にこのアプローチが嫌いです。これらの名前付きクエリを使用して、武器や薬などのarrayListを取得する必要があります。とにかく、なぜこのArrayFromDatabaseを埋め込むコードを追加しないのですか? – Guilherme
JPA/Hibernate/EclipseLinkについて知っていますか?そうでない場合は、使用する前に技術を学ぶ必要があります。 –
はい、私は知っていますが、私はこのソリューションを使用する必要があります。それがどうなるか知っていますか? –