Hibernate、jpa和mysql

Hibernate、jpa和mysql,mysql,sql,hibernate,jpa,spring-data,Mysql,Sql,Hibernate,Jpa,Spring Data,SpringData/jpa/hibernate/mysql/junit应用程序中的insert语句有一个小问题。我创建了一个小单元测试,看看是否可以执行一个简单的INSERT语句。 这就是我所拥有的: @Test public void testAddAssignment() { Assignment assignment = new Assignment(); assignment.setCharacter("Z"); assignment.setType(1);

SpringData/jpa/hibernate/mysql/junit应用程序中的insert语句有一个小问题。我创建了一个小单元测试,看看是否可以执行一个简单的INSERT语句。 这就是我所拥有的:

@Test
public void testAddAssignment() {
    Assignment assignment = new Assignment();
    assignment.setCharacter("Z");
    assignment.setType(1);
    assignmentController.addAssignment(assignment);
    assignment = assignmentController.findAssignmentById(16);
    assertEquals(16, assignment.getId());
    assertEquals(1, assignment.getType());
    assertEquals("Z", assignment.getCharacter());
}
当我尝试执行此操作时,会出现以下错误:

org.springframework.dao.InvalidDataAccessResourceUsageException: could not insert: [com.byronvoorbach.domain.Assignment]; SQL [insert into Assignment (CHARACTER, TYPE) values (?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: could not insert: [com.byronvoorbach.domain.Assignment]
这是我的addAssignment(assignment)

这是我的存储库:

@Transactional(readOnly = true)
public interface AssignmentRepository extends JpaRepository<Assignment, Long> {

public List<Assignment> findByType(int type);
}
@Transactional(readOnly=true)
公共接口分配存储库扩展了JpaRepository{
公共列表findByType(int类型);
}
因为我从未编写过sql查询,所以无法找到查询在哪里出错。 有人有主意吗

(如果需要更多源代码或my.xml文件,请告诉我)

编辑:
多亏了JB Nizet和fmucar,我才能够解决这个问题。我更改了列名,现在它可以工作了!!显然,我不知道列命名有一些限制。

尝试使用
字符
类型
以外的其他名称作为列名,因为这些可能是SQL中的保留关键字。

尝试使用
字符
类型
以外的其他名称作为列名,因为这些可能是SQL中的保留关键字

CHARACTER and TYPE are keywords for sql.
尽量不要将关键字用作列名。这可能就是问题所在


尽量不要将关键字用作列名。这可能就是问题所在。

Pff我永远不会得出这个结论。。。非常感谢!!我只是用新名字重新测试了一下,效果很好!谢谢你,阿甘芙,我永远不会得出这个结论。。。非常感谢!!我只是用新名字重新测试了一下,效果很好!再次感谢感谢您的投入!!也非常感谢您的投入!!
CHARACTER and TYPE are keywords for sql.