JPアプリケーションを埋め込みH2データベースを使用するように設定したSpringアプリケーションで使用します。@ 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 {
}
私が見ることができる
は、私はこのように定義されたUserエンティティを持っています。
:の行が挿入されたdata.sqlにファイルによって試みられたときしかし、はinitialValueと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