Работа над проектом, в котором мне нужно взаимодействовать с БД и извлекать различные столбцы. Когда я пытаюсь выполнить запрос из базы данных, 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 не потребует такой конфигурации.
Как мы решаем эту проблему?