java - hibernate 中的 SaveOrUpdate 意外地工作

标签 java mysql hibernate

我表 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/

相关文章:

java - 关闭扫描仪或重新分配它是否会更有效地利用资源?

php - 所有单元格的背景颜色都是相同的

php - 如何检查mysql数据库是否存在?

java - Hibernate删除非孤儿

java - Spring+Hibernate+JPA的多数据库

java - BZIP-OutputStream 的问题

java - 如何使用 WicketTester 测试 AutoComplete 组件

javascript - 当使用 ajax 获取 php 文件时,使用来自另一个文件的 PHP 变量

java - org.hibernate.Session.clear() 被认为是有害的?

java - 迭代解决方案的递归