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(assigment);です。
@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のおかげで、この問題を修正することができました。列名を変更しましたが、動作します!! 明らかに、私が気付いていなかった列の命名にはいくつかの制限があります。