繁体   English   中英

如何使用Oracle数据库在jpa批注中自动删除id值? 如何生成uuid值?

[英]how to autoincreament id value in jpa annotations with oracle db ? how to generate uuid values?

@Entity
@Table(name = "CONTACT_GROUP")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ContactGroup implements Serializable
{
private static final long serialVersionUID = 7161778136151592279L;
@Id
@GenericGenerator(name = "increment", strategy = "increment")
@GeneratedValue(generator = "increment")
@Column(name = "GRPOUP_ID")
private Long id;

@OneToMany(mappedBy="contactGroup",cascade = { CascadeType.ALL },  targetEntity = Contact.class)
Set<Contact> contacts;
}

@Entity
@Table(name = "CONTACT")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Contact implements Serializable
{
private static final long serialVersionUID = 7161778136151592279L;
@Id
@GenericGenerator(name = "increment", strategy = "increment")
@GeneratedValue(generator = "increment")
@Column(name = "CONTACT_ID")
Long id;

@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid2")
@Column(name="group", unique=true)
String group;

@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name = "GRPOUP_ID")
ContactGroup contactGroup;

}

您能告诉我我上面代码中的错误是什么吗?

给出ORA-00001:违反唯一约束

当我一次又一次地运行测试用例时

我如何生成在第一条记录中插入空白vlaue的uuid值

你能告诉我吗,谢谢

由于您正在使用Oracle DB,因此您可以定义并使用Oracle的Sequence来使uuid进行如下操作:

在您的数据库中创建序列,

CREATE SEQUENCE "CONTACT_GROUP_SEQUENCE" 
START WITH 1 
INCREMENT BY 1 -- < here is your "autoincrement" simulation
MAXVALUE 999999999
MINVALUE 1 
NOCACHE 
ORDER

@SequenceGenerator映射序列,并用它@GenericGenerator

public class ContactGroup implements Serializable
{

@Id
@SequenceGenerator(name = "CONTACT_GROUP_SQ", sequenceName = "CONTACT_GROUP_SEQUENCE", allocationSize = 0)
@GeneratedValue(generator = "CONTACT_GROUP_SQ", strategy = GenerationType.SEQUENCE)
@Column(name = "GRPOUP_ID")
private Long id;
...

在此指向Oracle文档的链接中,找不到有关如何将TableGenerator与Oracle DB一起使用的示例以及其他示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM