序列生成器:JAVA/JPA/SPRING

D1'*_*D1' 4 java oracle jpa spring-data-jpa

问题:是否可以不使用 select someSequence from Dual; 来生成序列号??

问题:默认情况@GeneratedValue@SequenceGenerator使用select someSequence from dual;获取我的 id 的 nextval 。但我的用户没有从双表中选择的权限,所以我只能使用 id =equence.nextval,但我不知道如何在实体类中使用它。或者我应该如何将 id 值传递给 Entity 构造函数,如sequence.nextval?

用法: Oracle DB、CrudRepository、save() 方法。

sec*_*ira 5

您需要首先在 Oracle 中创建序列:

CREATE SEQUENCE USER_SEQUENCE START WITH 1 INCREMENT BY 10;
Run Code Online (Sandbox Code Playgroud)

然后注释你的类,如下所示:

@Entity
@SequenceGenerator(name="USER_SEQUENCE_GENERATOR", sequenceName="USER_SEQUENCE", initialValue=1, allocationSize=10)
public class User {
    @Id
    @Column(name="USER_ID")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="USER_SEQUENCE_GENERATOR")
    private Long userId;
}
Run Code Online (Sandbox Code Playgroud)