问题:是否可能不使用从double中选择selectSequence来生成序列号; ?
问题:默认情况下,@GeneratedValue
和@SequenceGenerator
使用select someSequence from dual;
来获取我的id的下一个值。但是我的用户没有从双重表中选择的权限,因此我只能使用id = sequence.nextval,但我不知道如何在Entity类中使用它。还是应该将id值传递给诸如sequence.nextval之类的实体构造函数?
用法:Oracle DB,CrudRepository,save()方法。
答案 0 :(得分:1)
我认为您需要编写自己的策略并使用GenericGenerator
注释。这个答案可能对您有帮助:link
答案 1 :(得分:0)
您可以在以下查询的帮助下插入ID:
select max(id) from <<tableName>>;
如果无法从对偶表中进行选择,则可以查询自己的表,找到最大ID,将其递增1 ,并将其分配为新ID。
答案 2 :(得分:0)
您需要首先在Oracle中创建序列:
CREATE SEQUENCE USER_SEQUENCE START WITH 1 INCREMENT BY 10;
然后注释您的班级,如下所示:
@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;
}