@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:违反了唯一约束
当我一次又一次地运行测试用例时
我如何生成在第一个记录中插入空白值的uuid值
你能否提前告诉我
答案 0 :(得分:0)
由于您正在使用Oracle DB,您可以定义并使用Oracle的序列来使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;
...
您无法在此link to Oracle documentation中找到有关如何将TableGenerator与Oracle DB一起使用的此示例和其他示例。