org.hibernación.QueryException: no se pudo resolver la propiedad: filename


Estoy usando Hibernate Criteria para obtener valores de la columna filename en mi tabla contaque_recording_log.

Pero cuando obtengo el resultado, arroja una excepción

Org.hibernación.QueryException: no se pudo resolver la propiedad: nombre de archivo de: com.contaque.Hibernatablemappings.contaque_recording_log

Mi frijol de mesa es:

import java.util.Date;
import javax.persistence.*;


@Entity
@Table(name="contaque_recording_log")
public class contaque_recording_log implements java.io.Serializable{
private static final long serialVersionUID = 1111222233334404L;
@Id
@Column(name="logId", insertable=true, updatable=true, unique=false)
private Integer logId;

@Column(name="userName", insertable=true, updatable=true, unique=false)
private String userName;

@Column(name="ext", insertable=true, updatable=true, unique=false)
private String ext;

@Column(name="phoneNumber", insertable=true, updatable=true, unique=false)
private String phoneNumber;

@Column(name="callerId", insertable=true, updatable=true, unique=false)
private String callerId;

@Column(name="fileName", insertable=true, updatable=true, unique=false)
private String fileName;


@Column(name="campName", insertable=true, updatable=true, unique=false)
private String campName;

@Temporal(javax.persistence.TemporalType.TIMESTAMP)
@Column(name="eventDate", insertable=true, updatable=true, unique=false)
private Date eventDate;

@Column(name="disposition", insertable=true, updatable=true, unique=false)
private String disposition;

@Column(name="duration", insertable=true, updatable=true, unique=false)
private String duration;

@Column(name="calltype", insertable=true, updatable=true, unique=false)
private String calltype;

public Date getEventDate() {
    return eventDate;
}

public void setEventDate(Date eventDate) {
    this.eventDate = eventDate;
}

public String getCallerId() {
    return callerId;
}

public void setCallerId(String callerId) {
    this.callerId = callerId;
}

public String getExt() {
    return ext;
}

public void setExt(String ext) {
    this.ext = ext;
}

public String getFileName() {
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

public String getPhoneNumber() {
    return phoneNumber;
}

public void setPhoneNumber(String phoneNumber) {
    this.phoneNumber = phoneNumber;
}

public String getUserName() {
    return userName;
}

public void setUserName(String userName) {
    this.userName = userName;
}

public Integer getLogId() {
    return logId;
}

public void setLogId(Integer logId) {
    this.logId = logId;
}

public String getCampName() {
    return campName;
}

public void setCampName(String campName) {
    this.campName = campName;
}

public String getDisposition() {
    return disposition;
}

public void setDisposition(String disposition) {
    this.disposition = disposition;
}

public String getDuration() {
    return duration;
}

public void setDuration(String duration) {
    this.duration = duration;
}

public String getCalltype() {
    return calltype;
}

public void setCalltype(String calltype) {
    this.calltype = calltype;
}

}

MI clase de HibernateUtil de donde estoy recibiendo hibernate-session:

public enum HibernateUtilSpice {
INSTANCE;
public static SessionFactory sessionFactory = null;

private synchronized SessionFactory getSessionFactory(){

    if(sessionFactory == null){
        Configuration config = new Configuration();
        config.addAnnotatedClass(contaque_recording_log.class);
        config.addAnnotatedClass(contaque_servers.class);
        config.configure();

        //get the properties from Hibernate configuration file
        Properties configProperties = config.getProperties();
        ServiceRegistryBuilder serviceRegisteryBuilder = new ServiceRegistryBuilder();
        ServiceRegistry serviceRegistry = serviceRegisteryBuilder.applySettings(configProperties).buildServiceRegistry();
        sessionFactory = config.buildSessionFactory(serviceRegistry);
    }
    return sessionFactory;
}

public Session getSession(){
    return getSessionFactory().openSession();
}
}

Mi método de donde estoy obteniendo los datos cuadro:

public String getFileName() {

    try{
        hibernateSession = HibernateUtilSpice.INSTANCE.getSession();
        Criteria criteria = hibernateSession.createCriteria(contaque_recording_log.class);
        criteria.add(Restrictions.eq("campname", "spice"));
        criteria.add(Restrictions.eq("disposition", "WN"));
        criteria.setProjection(Projections.property("filename"));
        List list = criteria.list();
        for (Object object : list) {
            System.out.println("List obj: " + object);
        }
    } catch (Exception e){
        e.printStackTrace();
    } finally {
        hibernateSession.flush();
        hibernateSession.close();
    }
    return filename;
}

Si imprimo el criteria.toString(), el O / P es:

CriteriaImpl(com.contaque.hibernateTableMappings.contaque_recording_log:this[][campname=spice, disposition=WN]filename)

¿Dónde me equivoco, cómo obtengo los datos de mi Tabla?

Author: Cœur, 2014-01-31

1 answers

Las consultas de hibernación distinguen entre mayúsculas y minúsculas con nombres de propiedad (porque terminan confiando en los métodos getter/setter de @Entity).

Asegúrese de referirse a la propiedad como fileName en la consulta Criteria, no filename.

Específicamente, Hibernate llamará al método getter de la propiedad filename al ejecutar esa consulta de Criterios, por lo que buscará un método llamado getFilename(). Pero la propiedad se llama FileName y el getter getFileName().

Entonces, cambia la proyección de esta manera:

criteria.setProjection(Projections.property("fileName"));
 58
Author: Xavi López,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-31 10:51:02