表未映射 - HIBERNATE

时间:2015-10-22 15:49:27

标签: java hibernate db2

尝试使用Hibernate和DB2数据库从Struts2应用程序创建查询时遇到问题。它给我一个例外:

  

Struts问题报告

Struts检测到未处理的异常:   消息:

ClienteCRM is not mapped
ClienteCRM is not mapped [FROM ClienteCRM WHERE nombre LIKE XXXX]

文件:org / hibernate / hql / internal / ast / util / SessionFactoryHelper.java   行号:171

首先,这是我的项目树: Project tree

我有这些文件:

  

Hibernate配置文件:

<hibernate-configuration>
<session-factory>
    <property name="show_sql">true</property>

    <property name="hibernate.connection.driver_class">com.ibm.as400.access.AS400JDBCDriver</property>
    <property name="hibernate.connection.url">jdbc:as400://10.10.10.131/sugarcrmak </property>
    <property name="hibernate.connection.username">user</property>
    <property name="hibernate.connection.password">pwd</property>      
    <property name="hibernate.dialect">org.hibernate.dialect.DB2Dialect</property>

    <mapping class="com.ak.exchange.model.dto.ClienteCRM" />
</session-factory>

  

package com.ak.exchange.model.dto;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="accounts")
//@NamedQuery(name="ClienteCRM.buscarPorNombre", query="from ClienteCRM c where c.nombre like :nombre")
public class ClienteCRM implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;

@Id
@Column(name="id")
private String id;

@Column(name="name")
private String nombre;

public ClienteCRM(){

}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}   

}

  

ClienteCRM的DAO层

package com.ak.exchange.model.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

import com.ak.exchange.model.dto.ClienteCRM;

public class ClienteDAO {
protected Session session;

protected void openSession(){
    Configuration configuration = new Configuration().configure();
    StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
    SessionFactory sessionFactory = configuration.buildSessionFactory(builder.build());

    session = sessionFactory.openSession();
}

protected void closeSession(){
    session.close();
}

public List<ClienteCRM> buscarClientesCRMPorNombre (String aNombre){

    this.openSession();
    session.beginTransaction();

//      Query query = session.getNamedQuery("ClienteCRM.buscarPorNombre");
//      query.setParameter("nombre", "%" + aNombre + "%");

    Query selectAll = session.createQuery("FROM ClienteCRM WHERE nombre LIKE " + aNombre);

    @SuppressWarnings("unchecked")
    List<ClienteCRM> tmpClientes = (List<ClienteCRM>) selectAll.list();

    this.closeSession();

    return tmpClientes;
}

}

正如您所看到的,我尝试使用NamedQuery(已注释)创建查询,并从DAO创建。

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

  • hibernate.cfg.xml放入src/main/resources
  • 将您的地图文件放在src/main/resources
  • 像这样映射你的文件:  <mapping resource="ClienteCRM.hbm.xml" />

它应该有用。