Как исправить проблему: "Unable to resolve column", если в скрипте часть полей указана верно?
У меня есть следующий скрипт:
/*==============================================================*/
/* Table: Employees */
/*==============================================================*/
insert into Employees (firstName, lastName, phoneNumber, email, salary, role, password, username)
values ('Christiano', 'Ronaldo', '+421905123456', '[email protected]', 50000.00, 'TEAM_LEADER', 'testPassword', 'C7'),
('John', 'Smith', '+421905123480', '[email protected]', 40000.00, 'PM', 'testPassword2', 'Jo'),
('Michael', 'Jackson', '+421905123400', '[email protected]', 30000.00, 'DEVELOPER', 'testPassword3', 'Mike'),
('Leonardo', 'DiCaprio', '+421905123450', '[email protected]', 20000.00, 'SCIENTIST', 'testPassword4', 'Leo'),
('Brad', 'Pitt', '+421905123455', '[email protected]', 10000.00, 'ENGINEER', 'testPassword5', 'Brad');
Есть сущность:
import com.test.application.data.enums.Role;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.util.Collection;
import java.util.List;
/**
* @author invzbl3 on 12/16/2022
* @project RestApiApplication
*/
@Data
@ToString
@EqualsAndHashCode
@Entity(name = "employee_entity")
@Table(name = "employees")
public class Employee implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String firstName;
private String lastName;
private String phoneNumber;
private String email;
private double salary;
@Enumerated(EnumType.STRING)
private Role role;
private String password;
private String username;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(() -> "USER");
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return username;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
Я проверил аналогичный вопрос, но для меня он не выглядит таким же, потому что у меня там правильно отмечена часть полей.
В связи с этим у меня вопрос:
как я могу исправить данную проблему?
Если нужна любая дополнительная информация готов предоставить.
Заранее благодарю за любые идеи по данному вопросу.
Ответы (1 шт):
Автор решения: invzbl3
→ Ссылка
Проблема была связана с Spring Data конвенцией, работающей по умолчанию.
Добавил аннотации @JsonProperty над сущностью, чтобы не было проблем соответствия со скриптом:
@Data
@ToString
@EqualsAndHashCode
@Entity(name = "employee_entity")
@Table(name = "employees")
public class Employee implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@JsonProperty("first_name")
private String firstName;
@JsonProperty("last_name")
private String lastName;
@JsonProperty("phone_number")
private String phoneNumber;
private String email;
private double salary;
@Enumerated(EnumType.STRING)
private Role role;
private String password;
private String username;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(() -> "USER");
}
@Override
public String getPassword() {
return password;
}
@Override
public String getUsername() {
return username;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}