mysql - SpringBoot JPA MySQL 列名
问题描述
我正在尝试通过 SpringBoot 访问一个简单的 MySQL 存储过程。
桌子
employee(empId int, empName varchar(100), empAddress varchar(1000), primary key (empId, empName))
存储过程
PROCEDURE `get_Employee`(employeeId int)
BEGIN
select empId,empName,empAddress from employee where empId = employeeId;
END
实体类
@Entity
@Table(name="employee")
public class Employee implements Serializable {
@Id
private int empId;
private String empName;
private String empAddress;
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getEmpAddress() {
return empAddress;
}
public void setEmpAddress(String empAddress) {
this.empAddress = empAddress;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Employee{");
sb.append("empId=").append(empId);
sb.append(", empName='").append(empName).append('\'');
sb.append(", empAddress='").append(empAddress).append('\'');
sb.append('}');
return sb.toString();
}
}
SpringBoot 主类
@SpringBootApplication
public class JDBCApplication implements CommandLineRunner {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private EmployeeDAO employeeDAO;
public static void main(String[] args) {
SpringApplication.run(JDBCApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
String sql = "SELECT empId,empName,empAddress FROM employee";
List<Employee> employees = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(Employee.class));
employees.forEach(System.out::println);
System.out.println("-----------------");
employees = employeeDAO.getEmployeeList(1004);
employees.forEach(System.out::println);
}
}
当我运行该类时,我收到一个错误,即找不到列“emp_Id”。不知道它是如何得出这个列名的。
同样在运行之后,Employee 表最终添加了 3 个新列。一个新列,每个列都用于现有列,但其中包含“_”。像 emp_Id、emp_Name、emp_Address。它结束成为这个
TABLE `employee` (
`empId` int NOT NULL,
`empName` varchar(100) NOT NULL,
`empAddress` varchar(1000) DEFAULT NULL,
`emp_id` int NOT NULL,
`emp_address` varchar(255) DEFAULT NULL,
`emp_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`empId`,`empName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
这很奇怪,以前从未见过这样的场景。这是我第一次尝试 MySQL DB。这是正常的吗?同样,一旦我将 get_Employee SP 更改为使用“_”引用列,而不是原始列,它就可以正常工作。对此有什么想法吗?TIA
解决方案
您可以显式声明列名应该是什么
@Id
@Column( name="empId" )
private int empId;
@Column( name="empName" )
private String empName;
@Column( name="empAddress" )
private String empAddress;
推荐阅读
- makefile - CMake 并使用不同的标志进行连续运行会产生相同的输出
- php - Symfony 4 - 提交表单后将响应传递给另一个视图
- beagleboneblack - 在哪里可以找到有关配置和使用 Beaglebone Black 引脚的最新指南
- flutter - 是否有可能以字节为单位获取对象的大小,尤其是列表
或地图 ? - testing - 通过命令在 TestCafé Studio 中运行测试
- c - 无法在共享库中附加共享内存
- python - 从nodejs产生的python进程读取输出的问题
- php - 从WordPress中的最后一篇文章中获取第一张图片
- c - 计算C中一个句子中单词的出现次数
- c# - Microsoft Office interop Excel 中是否有任何选项隐藏保存对话框?