javamysqlspringspring-mvcjpa

Spring boot with Spring data JPA: could not extract ResultSet


I develop a Spring boot application with spring data JPA is anyone has a solution for this problem please?: My bean:

@Entity
@Table(name = "employee", catalog = "explorerrh")
public class Employee implements java.io.Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;


private Integer idemployee;
private String employeeName;
private String employeeLastName;
private String employeeCin;
private String employeePhone;
private String employeeAdress;
private String employeePost;
private String employeeCnss;
private String employeeCv;
private String employeePhoto;
private String employeeSalaire;

public Employee() {
}

public Employee(String employeeName, String employeeLastName,
        String employeeCin, String employeePhone, String employeeAdress,
        String employeePost, String employeeCnss, String employeeCv,
        String employeePhoto, String employeeSalaire) {
    this.employeeName = employeeName;
    this.employeeLastName = employeeLastName;
    this.employeeCin = employeeCin;
    this.employeePhone = employeePhone;
    this.employeeAdress = employeeAdress;
    this.employeePost = employeePost;
    this.employeeCnss = employeeCnss;
    this.employeeCv = employeeCv;
    this.employeePhoto = employeePhoto;
    this.employeeSalaire = employeeSalaire;
}

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idemployee", unique = true, nullable = false)
public Integer getIdemployee() {
    return this.idemployee;
}

public void setIdemployee(Integer idemployee) {
    this.idemployee = idemployee;
}

@Column(name = "employeeName", length = 45)
public String getEmployeeName() {
    return this.employeeName;
}

public void setEmployeeName(String employeeName) {
    this.employeeName = employeeName;
}

@Column(name = "employeeLastName", length = 45)
public String getEmployeeLastName() {
    return this.employeeLastName;
}

public void setEmployeeLastName(String employeeLastName) {
    this.employeeLastName = employeeLastName;
}

@Column(name = "employeeCIN", length = 45)
public String getEmployeeCin() {
    return this.employeeCin;
}

public void setEmployeeCin(String employeeCin) {
    this.employeeCin = employeeCin;
}

@Column(name = "employeePhone", length = 45)
public String getEmployeePhone() {
    return this.employeePhone;
}

public void setEmployeePhone(String employeePhone) {
    this.employeePhone = employeePhone;
}

@Column(name = "employeeAdress", length = 45)
public String getEmployeeAdress() {
    return this.employeeAdress;
}

public void setEmployeeAdress(String employeeAdress) {
    this.employeeAdress = employeeAdress;
}

@Column(name = "employeePost", length = 45)
public String getEmployeePost() {
    return this.employeePost;
}

public void setEmployeePost(String employeePost) {
    this.employeePost = employeePost;
}

@Column(name = "employeeCNSS", length = 45)
public String getEmployeeCnss() {
    return this.employeeCnss;
}

public void setEmployeeCnss(String employeeCnss) {
    this.employeeCnss = employeeCnss;
}

@Column(name = "employeeCV", length = 45)
public String getEmployeeCv() {
    return this.employeeCv;
}

public void setEmployeeCv(String employeeCv) {
    this.employeeCv = employeeCv;
}

@Column(name = "employeePhoto", length = 45)
public String getEmployeePhoto() {
    return this.employeePhoto;
}

public void setEmployeePhoto(String employeePhoto) {
    this.employeePhoto = employeePhoto;
}

@Column(name = "employeeSalaire", length = 45)
public String getEmployeeSalaire() {
    return this.employeeSalaire;
}

public void setEmployeeSalaire(String employeeSalaire) {
    this.employeeSalaire = employeeSalaire;
}

}

My service is like that:

interface EmployeeRepository extends Repository<Employee, Long> {

Page<Employee> findAll(Pageable pageable);

Employee findByEmployeeNameAndEmployeeCin(String employeeName, String cin);

}

then I get this error on com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'employee0_.employee_adress' in 'field list'

My Database is correctly generated and its is identic to bean generated! I didnot understant really what is the problem! so please anyone can help me to resolve This? Thank you men, If you need any other informations just ask me


Solution

  • As pointed out in another answer:

    By default Spring uses org.springframework.boot.orm.jpa.SpringNamingStrategy to generate table names. This is a very thin extension of org.hibernate.cfg.ImprovedNamingStrategy. The tableName method in that class is passed a source String value but it is unaware if it comes from a @Column.name attribute or if it has been implicitly generated from the field name.

    The ImprovedNamingStrategy will convert CamelCase to SNAKE_CASE where as the EJB3NamingStrategy just uses the table name unchanged.

    If you don't want to change the naming strategy you could always just specify your column name in lowercase:

    @Column(name="testname")

    Plus, are you sure the column is "employeeadress" and not "employeeaddress"?