[英]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.