gpt4 book ai didi

java - org.hibernate.QueryException : could not resolve property: filename

转载 作者:IT老高 更新时间:2023-10-28 21:10:14 25 4
gpt4 key购买 nike

我正在使用 Hibernate Criteria 从我的表 contaque_recording_log 中的列 filename 中获取值。

但是当我得到结果时,它会抛出一个异常

org.hibernate.QueryException: could not resolve property: filename of: com.contaque.hibernateTableMappings.contaque_recording_log

我的table bean是:

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

我的 hibernateUtil 类从我得到 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();
}
}

我从表中获取数据的方法:

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(),则 O/P 为:

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

我哪里出错了,如何从我的表中获取数据?

最佳答案

Hibernate 查询对属性名称区分大小写(因为它们最终依赖于 @Entity 上的 getter/setter 方法)。

确保在条件查询中将该属性称为 fileName,而不是 filename

具体来说,Hibernate 在执行 Criteria 查询时会调用 filename 属性的 getter 方法,因此它会寻找一个名为 getFilename() 的方法。但是该属性称为 FileName 和 getter getFileName()

所以,像这样改变投影:

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

关于java - org.hibernate.QueryException : could not resolve property: filename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21478178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com