H2 DB Not Null 컬럼에 Null을 insert하면 발생하는 일
일단 아무런 문제가 없는 간단한 Entity와 Repository를 만들고, application.yml에 h2 DB에 대한 정보를 적어둔다.
1 2 3 4 5 6 7 8 9 10 |
@Data @Entity public class Member { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name; } |
1 2 |
public interface MemberRepository extends JpaRepository<Member, Long> { } |
1 2 3 4 5 6 7 8 9 |
spring: h2: console: enabled: true jpa: show-sql: true datasource: hikari: jdbc-url: jdbc:h2:mem:testdb;MODE=MySQL; # MODE=MySQL이 굉장히 중요하다 |
그런 후에 아래 테스트를 실행시켜보자.
1 2 3 4 5 6 7 8 9 10 11 12 |
@SpringBootTest class DemoApplicationTests { @Autowired private MemberRepository memberRepository; @Test void test() { memberRepository.save(new Member()); // Entity의 값을 null로 insert함 System.out.println(memberRepository.findAll()); } } |
테스트가 성공하고, 결과값이 나온다. column은 not null로 선언되어 있었다. 그런데 null로 insert가 성공한 것이다.
1 2 3 4 5 6 |
Hibernate: create table member (id bigint not null, name varchar(255) not null, primary key (id)) ... Hibernate: call next value for hibernate_sequence Hibernate: insert into member (name, id) values (?, ?) Hibernate: select member0_.id as id1_0_, member0_.name as name2_0_ from member member0_ [Member(id=1, name=)] |