未知的实体bean类

时间:2017-05-25 22:11:39

标签: java jpa

我有一个小问题。当我运行下面的代码时,它会给我一个错误消息:

线程中的异常" main" java.lang.IllegalArgumentException:未知的实体bean类:类com.dke.ps.Items.Item,请验证此类是否已使用@Entity批注标记。     在org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:707)     在org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:588)     在com.dke.ps.Server.Server.main(Server.java:121)

这是我的代码:

package com.dke.ps.Server;

import static com.dke.ps.Constants.Constants.*;
import com.dke.ps.Items.Item;
import com.dke.ps.Items.Potion;
import com.dke.ps.Items.Weapon;
import com.dke.ps.Items.Armor;
import java.util.ArrayList;
import java.sql.*;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class Server
{

    public Server()
    {
        /*
        Inicializace serveru.
        - login informace pro server jsou připravené v konstantách v balíčku Constants ;)
        */
    }

    public boolean login(String username, String password)
    {
        /*
        Ověření loginu.
        - vrací TRUE pokud je username a password správné
        - jinak vrací FALSE
        */ 
        return true;
    }

    public String getSaveGame(User user)
    {
        String saveData = "";
        /*
        Stáhne ze serveru uloženou pozici.
        */
        return saveData;
    }

    public void uploadSaveGame(String saveData)
    {
        /*
        Nahraje na server uloženou pozici.
        */
    }

    public ArrayList<Weapon> getDbWeapons()
    {
        ArrayList<Weapon> dbWeapons = new ArrayList<>();
        /*
        Stáhne všechny zbraně ze serveru a vrátí je jako ArrayList.
        Nezapomeň při vkládání doplnit parametr Item.type!

        */
        return dbWeapons;
    }

    public ArrayList<Armor> getDbArmors()
    {
        ArrayList<Armor> dbArmors = new ArrayList<>();
        /*
        Stáhne všechny zbroje ze serveru a vrátí je jako ArrayList.
        Nezapomeň při vkládání doplnit parametr Item.type!

        */
        return dbArmors;
    }

    public ArrayList<Potion> getDbPotions()
    {
        ArrayList<Potion> dbPotions = new ArrayList<>();
        /*
        Stáhne všechny zbroje ze serveru a vrátí je jako ArrayList.
        Nezapomeň při vkládání doplnit parametr Item.type!
        */
        return dbPotions;
    }

    public ArrayList<Item> getDbItems()
    {
        ArrayList<Item> dbItems = new ArrayList<>();
        /*
        Volá metody:
            getDbWeapons();
            getDbArmors();
            getDbPotions();
        A jejich obsah sloučí do jednoho listu, který vrátí.
        */
        return dbItems;
    }

    public ArrayList<Integer> getPurchasedItems(User user)
    {
        ArrayList<Integer> listOfPurchasedItems = new ArrayList<>();
        /*
        Vrátí seznam předmětů zakoupených uživatelem User (je-li přihlášení validní)
        viz getter user.isLoginOk().
        */
        return listOfPurchasedItems;
    }

    public boolean purchaseItem(User user, int itemId)
    {
        /*
        Zapíše nákup předmětu do databáze.
        - vrací TRUE byl-li zápis úspěšný
        - jinak FALSE.
        */
        return true;
    }

    public static void main(String[] args) {
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("com.dke_project-sheogorath_jar_0.1aPU");
    EntityManager em = emf.createEntityManager();

     Item item = em.find(Item.class, 1);

      System.out.println(" ID = " + item.getItemid());
      System.out.println(" NAME = " + item.getName());
      System.out.println(" Description = " + item.getDescription());
      System.out.println(" getType = " + item.getType());
   }
}

和班级项目:

    /*
 * 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.Items;

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.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author vitva
 */

@Entity
@Table(name = "item")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Item.findAll", query = "SELECT i FROM Item i")
    , @NamedQuery(name = "Item.findByItemid", query = "SELECT i FROM Item i WHERE i.itemid = :itemid")
    , @NamedQuery(name = "Item.findByName", query = "SELECT i FROM Item i WHERE i.name = :name")
    , @NamedQuery(name = "Item.findByValue", query = "SELECT i FROM Item i WHERE i.value = :value")
    , @NamedQuery(name = "Item.findByDescription", query = "SELECT i FROM Item i WHERE i.description = :description")
    , @NamedQuery(name = "Item.findByIcon", query = "SELECT i FROM Item i WHERE i.icon = :icon")
    , @NamedQuery(name = "Item.findByType", query = "SELECT i FROM Item i WHERE i.type = :type")
    , @NamedQuery(name = "Item.findByPrice", query = "SELECT i FROM Item i WHERE i.price = :price")})
public class Item implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "itemid")
    public int itemid;
    @Column(name = "name")
    public String name;
    @Column(name = "value")
    public Integer value;
    @Column(name = "description")
    public String description;
    @Column(name = "icon")
    public String icon;
    @Column(name = "type")
    public Integer type;
    @Column(name = "price")
    public Integer price;

    public Item() {
    }

    public Item(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 Integer getValue() {
        return value;
    }

    public void setValue(Integer value) {
        this.value = value;
    }

    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;
    }

}

我不知道问题出在哪里。我只想在类的主要方法中创建,以测试我的数据库是否正常下载表。

这是我的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="com.dke_project-sheogorath_jar_0.1aPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://slon.felk.cvut.cz:5432/db17_koresmi1"/>
      <property name="javax.persistence.jdbc.user" value="db17_koresmi1"/>
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
      <property name="javax.persistence.jdbc.password" value="databaze_dbs"/>
      <property name="javax.persistence.schema-generation.database.action" value="create"/>
    </properties>
  </persistence-unit>
</persistence>

你能帮帮我吗?

谢谢!

0 个答案:

没有答案