我在Journal Journal中有几列,其中JournalKey是主键,而JournalID具有唯一约束。
JournalKey是自动生成密钥。
现在,当我使用insertOrUpdate开始保存时,我预计hibernate会在JournalID不存在时插入行,否则更新它。
由于JournalKey是自动生成的,因此它没有多大的作用。 但是它给了我UniqueConstraintViolation错误。
请帮助。
期刊保存为
public Object saveOrUpdateObj(Object obj){
Session session = HibernateUtil.getSession();
try{
session.beginTransaction();
session.saveOrUpdate(obj);
session.getTransaction().commit();
}finally{
session.close();
}
return obj;
}
Journal类以这种方式定义
@Entity
@Table(name="Dim_Journal")
public class Journal {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="JournalKey")
private Long journalKey;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="FK_Org_Key")
private Organisation organisation;
@Column(name="JournalID")
private String journalID;
@Column(name="JournalDate")
private Date journalDate;
@Column(name="JournalNumber")
private String JournalNumber;
@Column(name="JournalCreationDate")
private Date createdDateUTC;
@Column(name="SourceID")
private String SourceID;
@Column(name="SourceType")
@Enumerated(EnumType.STRING)
private JournalSourceType sourceType;
@Transient
private List<JournalLine> journalLines;
@Transient
private Long organisationId;
}
答案 0 :(得分:0)
如何在JPA中使用AUTO算法自动生成String?
你做错了。如果Id字段是String,则可以使用UUID生成自动String,否则将Id设置为Long类型。
click here看看如何在JPA中使用UUID算法实现String。