我表 Journal 中有几列,JournalKey 是主键,JournalID 具有唯一约束。
JournalKey 是自动生成的 key 。
现在,当我开始使用 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;
}
期刊类是这样定义的
@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;
}
最佳答案
如何在 JPA 中使用 AUTO 算法自动生成字符串?
你这样做是错误的。如果 Id 字段是字符串,则可以使用 UUID 生成自动字符串,否则将 Id 设为 Long 类型。
click here查看如何在 JPA 中使用 UUID 算法实现字符串。
关于java - hibernate 中的 SaveOrUpdate 意外地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179209/