我目前在一家没有主要应用程序文档的公司工作,因此我必须在每次更改时使用尝试和失败技术。
此应用程序是在带有JDK 6的JSF 1.2和一些辅助工具(如RichFaces和Hibernate)上开发的,它们连接到数据库引擎MS SQL Server。目前,我必须添加一个必须从数据库提供的新选择器,但每当我执行以下代码行时:
return this.entityManager.createQuery("select d from DiagnosticoPrueba d").getResultList();
它显示以下错误:
org.hibernate.hql.ast.QuerySyntaxException: DiagnosticoPrueba is not mapped [select d from DiagnosticoPrueba d]
我用来添加新选择器的过程如下:
我创建了DIAGNOSTICO
表并插入了相应的数据。为了证实这些信息,我将向您展示以下句子的结果。
SELECT * FROM DIAGNOSTICO;
EXEC sp_columns DIAGNOSTICO;
我创建了将映射DIAGNOSTICO表的JavaDiagnosticoPrueba类
package *.entidades;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity (name = "DiagnosticoPrueba")
@Table(name = "DIAGNOSTICO")
public class DiagnosticoPrueba implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private int id;
private String nombre;
public DiagnosticoPrueba() {
}
public DiagnosticoPrueba(int id, String nombre) {
this.id = id;
this.nombre = nombre;
}
@Id
@Column(name = "ID", unique = true, nullable = false)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "NOMBRE", length = 200)
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
}
在应用程序中找不到文件hibernate.cfg.xml
,但文件为persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd" version="1.0">
<persistence-unit name="MY_ENTERPRISE" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>myEnterpriseDataSource</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.default_catalog" value="MY_ENTERPRISE"/>
<property name="hibernate.default_schema" value="SCHEMA_MY_ENTERPRISE"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="hibernate.ejb.event.post-insert" value="org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener"/>
<property name="hibernate.ejb.event.post-update" value="org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener"/>
<property name="hibernate.ejb.event.post-delete" value="org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener"/>
<property name="hibernate.ejb.event.pre-collection-update" value="org.hibernate.envers.event.AuditEventListener"/>
<property name="hibernate.ejb.event.pre-collection-remove" value="org.hibernate.envers.event.AuditEventListener"/>
<property name="hibernate.ejb.event.post-collection-recreate" value="org.hibernate.envers.event.AuditEventListener"/>
</properties>
</persistence-unit>
</persistence>
我认为错误是由于应用程序的配置文件中没有实体DiagnosticoPrueba
,我认为解决方案的关键是myEnterpriseDataSource
。
你建议我做什么?
谢谢!
答案 0 :(得分:0)
您需要映射persistence.xml中的类
设置外部属性部分。
<class>com.mycompany.entities.DiagnosticoPrueba</class>