正在处理一个项目,在该项目中我需要与db接口并检索各种列。当我尝试从数据库查询时,Hibernate创建的别名与数据库的实际列名不匹配。因此,我得到一个java.sql.SQLException: Column not found
异常。
映射的类:
package com.ots.Models;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name="My_Table")
public class MyRecord {
@EmbeddedId
private RecordId id;
@Column(name="FILE_NAME")
private String File_Name;
@Column(name="KEY")
private String key;
@Column(name="MET_TYPE")
private String met_type;
@Column(name="DSHARED")
private String dShared;
@Column(name="SER")
private String ser;
@Column(name="SERVI")
private int servi;
@Column(name="DESCRIPTION")
private String description;
public MyRecord(RecordId id, String File_Name, String key, String met_type,
String dShared, String ser, int servi, String description) {
this.id = id;
File_Name = File_Name;
this.key = key;
this.met_type = met_type;
this.dShared = dShared;
this.ser = ser;
this.servi = servi;
this.description = description;
}
public RecordId getId() {
return id;
}
public void setId(RecordId id) {
this.id = id;
}
public String File_Name() {
return File_Name;
}
public void setFile_Name(String File_Name) {
File_Name = File_Name;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getMet_type() {
return metric_type;
}
public void setMet_type(String met_type) {
this.metric_type = metric_type;
}
public String getDShared() {
return dShared;
}
public void setDShared(String dShared) {
this.dShared = dShared;
}
public String getService_cat_no() {
return service_cat_no;
}
public void setSer(String ser) {
this.ser = ser;
}
public int getServi() {
return servi;
}
public void setServi(int servi) {
this.servi= servi;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
呼叫班级:
@Controller
@RequestMapping("/history")
public class MyTable {
@SuppressWarnings("unchecked")
@GetMapping("/load")
public String loadData(Model theModel) {
//Get all records out of the table from Hibernate
Session newSession = Statics.getSessionFactory().openSession();
newSession.beginTransaction();
//load all data from the Historical table
String hqlQuery = "from MyRecord";
Session session = Statics.getSessionFactory().openSession();
Query<CrossReferenceRecord> query = session.createQuery(hqlQuery);
List<CrossReferenceRecord> crossReferenceList = query.getResultList();
theModel.addAttribute("crossReferenceList", crossReferenceList);
return "CrossReferenceView";
}
}
数据库架构:
int id, VarChar(20) File_Name, VarChar(20) key, VarChar(20) met_type, VarChar(20) dShared, VarChar(20) ser, int servi, VarChar(20) description
完整错误:
Hibernate: select crossrefer0_.FILE_NAME as FIL_BUI3_0_, ... java.sql.SQLException: Column not found: FIL_BUI3_0_
这似乎是一个奇怪的问题-我希望Hibernate不需要这种配置。
我们如何处理此问题?
答案 0 :(得分:0)
我不确定这是否是确切的问题,但是您的查询是从MyRecord
中选择的,它是类的名称,而不是表的名称。我想您想从My_Table
查询。同样,在调用createQuery
和getResultList
时,是否要将这些结果保存到MyRecord
类中?