我在 Spring-data/jpa/hibernate/mysql/junit 应用程序中的插入语句有一个小问题。我创建了一个小单元测试,看看我是否可以做一个简单的 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
public Assignment addAssignment(Assignment assignment) {
return repository.save(assignment);
}
这是我的存储库:
@Transactional(readOnly = true)
public interface AssignmentRepository extends JpaRepository<Assignment, Long> {
public List<Assignment> findByType(int type);
}
由于我从未编写过 sql 查询,因此我无法找到查询出错的地方。有人有想法吗?
(如果您需要更多源代码或我的 .xml 文件,请告诉我)
编辑: 感谢 JB Nizet 和 fmucar,我能够解决这个问题。我更改了列名,现在它可以工作了!!显然,列命名有一些我不知道的限制。