Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MVC JPA异常org.hibernate.exception.sqlgrammareexception_Java_Mysql_Spring_Jpa - Fatal编程技术网

Java Spring MVC JPA异常org.hibernate.exception.sqlgrammareexception

Java Spring MVC JPA异常org.hibernate.exception.sqlgrammareexception,java,mysql,spring,jpa,Java,Mysql,Spring,Jpa,我不太熟悉Spring JPA的东西。我正在学习。我试图在mysql数据库中插入数据时出现了奇怪的错误 我确保我的表和数据库设置与我的一样正确 mysql> show columns in empolyee in test; | Field | Type | Null | Key | Default | Extra | | id | int(6) | NO | PRI | NULL | auto_increment |

我不太熟悉Spring JPA的东西。我正在学习。我试图在mysql数据库中插入数据时出现了奇怪的错误

我确保我的表和数据库设置与我的一样正确

mysql> show columns in empolyee in test;


| Field | Type        | Null | Key | Default | Extra          |

| id    | int(6)      | NO   | PRI | NULL    | auto_increment | 
  eid   | int(6)      | YES  |     | NULL    |                |
| name  | varchar(40) | NO   |     | NULL    |                |
| role  | varchar(20) | YES  |     | NULL    |                |
我的实体类:-

      @Entity
     public class Employee extends AbstractPersistable<Long> {

    private int eid;
    private String name;
    private String role;

    public Employee(){

    }

    public Employee(int aeid, String aname, String arole){
        eid=aeid;
        name = aname;
        role = arole;
       }
     }

MySQL表名的大小写敏感度取决于操作系统:

在MySQL中,数据库对应于数据中的目录 目录数据库中的每个表至少对应一个 数据库目录中的文件(可能更多,具体取决于 存储引擎)。因此,案件的敏感性 底层操作系统在区分大小写方面起着重要作用 数据库和表名。这意味着数据库和表名不可用 在Windows中区分大小写,在大多数类型中区分大小写 Unix。一个显著的例外是MacOSX,它基于Unix,但使用 不区分大小写的默认文件系统类型(HFS+)。然而, Mac OS X还支持UFS卷,它与其他卷一样区分大小写 在任何Unix上

因此,您需要将表名设置为正确的大小写:

 @Entity @Table(name = "empolyee")
 public class Employee extends AbstractPersistable<Long>  { ... }
@Entity@Table(name=“empolyee”)
公共类Employee扩展了可抽象持久化的{…}

将实体类注释更改为以下内容

@Entity
@Table(name="empolyee")

数据库中的表名是empolyee

@Entity
public class Employee extends AbstractPersistable<Long>
@实体
公共类Employee扩展了AbstractPersistable
这里您没有指定@Table annotation,因此JPA将使用表名作为类名,这是数据库中不存在的Employee。因此,改变这一点

@Entity
@Table(name="empolyee")  //this exists in database
public class Employee extends AbstractPersistable<Long>
@实体
@表(name=“empolyee”)//数据库中存在
公共类Employee扩展了AbstractPersistable

可能您连接到了其他数据库?员工和员工不一样?是打字错误吗?@Atilla Ozgur,你实际上给出了一个正确的答案作为评论。我建议你把它作为答案贴出来。这是一个打字错误:
empolyee
在DB中,而
employee
在Java中,非常感谢!它正在工作。问:为什么自动生成的文件id总是从6开始?我试过其他几次,总是从6点开始
@Entity
@Table(name="empolyee")  //this exists in database
public class Employee extends AbstractPersistable<Long>