私は
Product
クラスを持っています。正しいクラス名を指定してQuerySyntaxExceptionをスローするHibernate@Entity public class Product { . . public Product() { } . . }
一般的なDAO。
public class GenericDao<T> { private Class<T> type; @Inject protected EntityManager entityManager; public GenericDao() { } public List<T> list() { return entityManager.createQuery("FROM " + type.getSimpleName(), type).getResultList(); } }
A製品DAOクラス;
public class ProductDao extends BaseDao<Product> { }
製品JAX-RSサービス。
@Path("/product") public class ProductService { @Inject private ProductDao productDao; @GET @Path("/getProducts") @Produces(MediaType.APPLICATION_JSON) public List<Product> getProducts() { List<Product> response = productDao.list(); return response; } }
私がアプリケーションを実行してエンドポイントを呼び出すと、すばらしいQuerySyntaxExceptionが発生します。
org.jboss.resteasy.spi.UnhandledException: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: Product is not mapped [FROM Product]
persistence.xmlの
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="mainconfig">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/awsapp" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="javax.persistence.jdbc.user" value="${conf.jdbc.user}" />
<property name="javax.persistence.jdbc.password" value="${conf.jdbc.password}" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
あなた 'persistence.xml'は何に見えますか? –
@RobbyCornelissen私は 'persistence.xml'コンフィグを含めました – Laazo
@Azola Productクラスにマッピングが含まれていると宣言したことはありますか?つまり、構成ファイルの1つでは、製品(またはそのパッケージ)を持続マネージャーで管理する必要があることを示す必要があります。 – RubioRic