java - Java Spring Boot 在 SQL 查询中添加随机“d”字符
问题描述
我正在使用 Spring Boot 制作用户管理平台。当我发出 GET 请求以返回用户时,我收到此错误
出现意外错误(类型=内部服务器错误,状态=500)。无法提取结果集;SQL [不适用];嵌套异常是 org.hibernate.exception.SQLGrammarException:无法提取 ResultSet ... 原因:java.sql.SQLSyntaxErrorException:“字段列表”中的未知列“user0_.dtype”
那个随机的“dtype”列是什么?
编辑:我将“类型”更改为“角色”,因为它非常令人困惑。我还注意到,即使我在代码中更改它,我仍然会遇到同样的错误。该问题已相应编辑。
实体
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "users")
public class User {
@Id
@Column(name = "id")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "role")
private String role;
public User() {}
public User(String firstName, String lastName, String username, String password, String role) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.username = username;
this.password = password;
this.role = role;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", username=" + username
+ ", password=" +password+ ", role=" + role + "]";
}
}
控制器
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public List<User> retrieveAllUsers(){
return userRepository.findAll();
}
@GetMapping("/users/{id}")
public User retreiveTask(@PathVariable int id) {
Optional<User> user = userRepository.findById(id);
return user.get();
}
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable int id) {
userRepository.deleteById(id);
}
@PostMapping("/users")
public ResponseEntity<Object> createUser(@RequestBody User user){
User savedUser = userRepository.save(user);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedUser.getId()).toUri();
return ResponseEntity.created(location).build();
}
@PutMapping("/users/{id}")
public ResponseEntity<Object> updateUser(@RequestBody User user, @PathVariable int id){
Optional<User> userOptional = userRepository.findById(id);
if(!userOptional.isPresent())
return ResponseEntity.notFound().build();
user.setId(id);
userRepository.save(user);
return ResponseEntity.noContent().build();
}
}
MySQL 数据库脚本
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT,
first_name varchar(100) NOT NULL,
last_name varchar(100) NOT NULL,
username varchar(100) NOT NULL,
password varchar(100) NOT NULL,
role text NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
任何帮助,将不胜感激。
解决方案
https://www.viralpatel.net/hibernate-inheritence-table-per-hierarchy-mapping/
如果
@DiscriminatorColumn
注释丢失,并且需要一个鉴别器列,则鉴别器列的名称默认为“DTYPE”,鉴别器类型为 DiscriminatorType.STRING。
推荐阅读
- python - 为什么 Python 会自动从图像数组中删除负值?
- mysql - Vue.js Web 应用程序使用带有 mysql-ssh 的 Node.js 连接
- javascript - 我可以让 webpack 将包发送到两个目录吗?
- javascript - 在 TypeScript 中使用符号作为对象键类型
- image-processing - 我如何(非常近似地)根据它的 CMYK 或 RGB 数字概括颜色的名称?
- unit-testing - 如何在 Jest moduleNameMapper 中正确创建正则表达式
- memory - 每次写入缓冲区时是否应该调用`vkMapMemory`?
- python - 如何从python插入和检索存储在REDIS中的json?
- amazon-web-services - AWS GLUE ETL - 如何在新列中连接值
- sql - 如何在 Oracle SQL 中编写限制非所有者访问表的策略?