일단 아무런 문제가 없는 간단한 Entity와 Repository를 만들고, application.yml에 h2 DB에 대한 정보를 적어둔다.
|
@Data @Entity public class Member { @Id @GeneratedValue private Long id; @Column(nullable = false) private String name; } |
|
public interface MemberRepository extends JpaRepository<Member, Long> { } |
|
spring: h2: console: enabled: true jpa: show-sql: true datasource: hikari: jdbc-url: jdbc:h2:mem:testdb;MODE=MySQL; # MODE=MySQL이 굉장히 중요하다 |
그런 후에 아래 테스트를 실행시켜보자.
|
@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가 성공한 것이다.
|
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=)] |
없는 것이… 더 보기 »H2 DB Not Null 컬럼에 Null을 insert하면 발생하는 일