Java 未知实体bean类
我有这么一个小问题。当我运行下面的代码时,它会给我一条错误消息: 线程“main”java.lang.IllegalArgumentException中出现异常:未知实体bean类:class 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) 以下是我的代码:Java 未知实体bean类,java,jpa,Java,Jpa,我有这么一个小问题。当我运行下面的代码时,它会给我一条错误消息: 线程“main”java.lang.IllegalArgumentException中出现异常:未知实体bean类:class com.dke.ps.Items.Item,请验证该类是否已用@entity注释标记。 位于org.eclipse.persistence.internal.jpa.EntityManagerImpl.find(EntityManagerImpl.java:707) 位于org.eclipse.persi
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());
}
}
我不知道问题出在哪里。我只想创建类内服务器main方法来测试我的数据库下载表是否正常
这是我的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>
org.eclipse.persistence.jpa.PersistenceProvider
你能帮帮我吗
谢谢 给我们看看你的persistence.xml文件。看看这里:我刚刚编辑了我的问题,它没有列出你的实体。在
标记中添加com.dke.ps.Items.Item
添加com.dke.ps.Items.Item
,以便指定显式管理的持久性类。
<?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>