java org.hibernate.QueryException: संपत्ति को हल नहीं कर सका: फ़ाइल नाम



oracle-sqldeveloper hibernate-criteria (1)

मैं अपने मेज contaque_recording_log में स्तंभ filename से मूल्य प्राप्त करने के लिए हाइबरनेट Criteria का उपयोग कर रहा हूँ

लेकिन जब मुझे परिणाम मिल रहा है, तो यह एक अपवाद फेंकता है

org.hibernate.QueryException: संपत्ति को हल नहीं कर सका: फ़ाइल का नाम: com.contaque.hibernateTableMappings.contaque_recording_log

मेरी टेबल बीन है:

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;
}

}

मेरी हाइबेरनेटउपलिट क्लास, जहां से मैं सीतनिद्रा में होना चाहता हूं:

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();
}
}

मेरी पद्धति जहां मुझे तालिका से डेटा प्राप्त हो रहा है:

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;
}

यदि मैं criteria.toString() मुद्रित करता हूं। criteria.toString() , ओ / पी है:

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

मैं कहाँ जा रहा हूं, मैं अपनी टेबल से डेटा कैसे प्राप्त करूं?


सीतनिद्रा में होना क्वेरी संपत्ति के नाम से मामले संवेदनशील हैं (क्योंकि वे @Entity पर @Entity / सेटर विधियों पर भरोसा करते हैं)।

सुनिश्चित करें कि आप संपत्ति के संदर्भ में filename रूप में मानदंड क्वेरी में, filename नहीं।

विशेष रूप से, हाइबरनेट उस मानदंड क्वेरी को निष्पादित करते समय filename संपत्ति के प्राप्तकर्ता विधि को कॉल करेगा, इसलिए यह getFilename() नामक एक विधि के लिए दिखेगा getFilename() । लेकिन संपत्ति को FileName और getFileName()

तो, ऐसा प्रोजेक्शन बदलें:

criteria.setProjection(Projections.property("fileName"));




hibernateexception