포함 된 H2 데이터베이스를 사용하도록 구성된 Spring 응용 프로그램에서 JPA를 사용합니다.@ SequenceGenerator의 initValue 및 allocationSize는 무시되고 생성기는 @Id 필드 (H2, HIbernate, Spring)에 할당되지 않습니다.
@Entity
@SequenceGenerator(name = "myseq", sequenceName = "MY_SEQ", initialValue = 1000, allocationSize = 1)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myseq")
private Long id;
@Column(name = "USERNAME")
private String userName;
@Column(name = "PASSWORD_ENCODED")
private String passwordEncoded;
@ManyToMany
@JoinTable(name = "USER_ROLES", joinColumns = @JoinColumn(name = "USER_ID", referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID"))
private Set<Role> roles;
}
//getters
}
상황은 다음과 같이 정의됩니다 : 로그가 MY_SEQ가 생성됩니다 생성에서
@Configuration
@EnableWebMvc
@EnableWebSecurity
@EnableAutoConfiguration
@EnableJpaRepositories(basePackages = "my.package")
@EntityScan(basePackages = "my.package")
@ComponentScan(basePackages = "my.package")
public class AuthenticationWebAppContext extends WebSecurityConfigurerAdapter {
}
내가 볼 수
나는 다음과 같이 정의 된 사용자 개체가 있습니다.
: 행 삽입이 data.sql 파일에 의해 시도 될 때,로 초기 및 allocationSize이 완전히 무시되고 순서가17:22:29.236 [main] DEBUG org.hibernate.SQL - create sequence my_seq start with 1 increment by 1 17:22:29.237 [main] DEBUG org.hibernate.SQL - create table role (id bigint generated by default as identity, name varchar(255), primary key (id)) 17:22:29.248 [main] DEBUG org.hibernate.SQL - create table user (id bigint not null, password_encoded varchar(255), username varchar(255), primary key (id))
그래서 사용자의 id 필드에 할당되지 않은, 나는 다음과 같은 오류가 발생했습니다
Caused by: org.h2.jdbc.JdbcSQLException: NULL not allowed for column "ID"; SQL statement:
INSERT INTO user (USERNAME, PASSWORD_ENCODED) VALUES ('user1', '<some_giberish>') [23502-194]
내가 무엇을 놓치고 있습니까?
정확하게, 감사합니다! 그러나 나는 여전히 무시되는 initiValue 매개 변수로 고심하고 있습니다. 생성 된 각 ID에 대해 최소값을 설정하고 싶습니다. – jilt3d
이 속성을 설정하려고하면 'hibernate.id.new_generator_mappings = true' –
완벽! 나를 위해 일한 구성 매개 변수는'spring.jpa.hibernate.use-new-id-generator-mappings'입니다. 이 매개 변수를 포함하여 답변을 업데이트 할 수 있습니까? 허용 할 수 있도록 표시 할 수 있습니까? – jilt3d