当前位置: 首页 > 知识库问答 >
问题:

如何在保存操作失败,如果对象已经存在于数据库中的JPA

商昆琦
2023-03-14

我试图用JPA将一个对象保存到数据库中。对象有两个属性age和email。电子邮件是@id和字符串类型。

如果我试图用相同的电子邮件保存两个对象。最后一个更新数据库。

如何使上次保存失败?

class Person {


    @Id
    @NotNull
    @Email
    private String email;
    private int age;

}

共有1个答案

孔冥夜
2023-03-14

你要走的路是不推荐的。

你可以让Person类像下面这样的东西,只在之前验证电子邮件。

class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private int id;

    @NotNull
    @Email
    @Column(unique=true) 
    private String email;

    private int age;
}
 类似资料:
  • 问题内容: 我正在使用Hibernate / Spring应用程序来管理一些电影。 班级电影与班级流派有着多对多的关系。这两个类都使用GeneratedValue注释生成了ID。 使用@Cascade(CascadeType.SAVE_UPDATE)通过电影对象保存了流派。我对流派的type属性(它的名称;例如“ Fantasy”)设置了唯一的约束。 我现在想做的是让Hibernate检查是否已经

  • 问题内容: 如何在SQLite数据库中存储JSON对象?正确的方法是什么? 一个地方是Blob类型列。如果我可以将JSON对象转换为字节数组并使用Fileoutputstream 另一个想法是将文本列存储为字符串 问题答案: 将JSONObject转换为String并另存为TEXT / VARCHAR。 在检索同一列时,将String转换为JSONObject。 例如 写入数据库 从数据库读取

  • 我有一个实体CandidateTransaction和CandidateTransactionRepository扩展了CrudRepository 我正在使用CrudRepository的save方法来保存所述实体的对象。当实体没有行时,它将创建一个自动生成的键并将其插入ID列,而不需要Java端的干预。 而且,由于CrudRepository的save()方法检查实体是否是新的,如果是新的,它

  • 我基本上有一个预订系统,包括预订、员工和客户。 我想保留一个预订实体。预订实体有一个员工(将提供服务)和一个客户(预订是为其发生的)。 我希望能够保留一个预订对象,如果该对象已经存在,则不会在其中创建员工和/或客户。我如何通过JPA和hibernate实现这一点。 我还想保留我现有的模式(预订表、员工表、客户表以及预订客户、预订员工之间的关系表…) 以下是预订实体: 这里是客户实体: 这里是雇员实

  • 问题内容: 我有以下问题,当试图在数据库中插入对象时,Hibernate卡住,没有返回错误,对象没有正确保存。 调试它,我发现它挂在 我正在使用PostgreSQL作为数据库。 我的配置文件: SELECT部分​​起作用。 我不确定我缺少什么。同样使用本地SQL插入命令,它也可以工作。 问题答案: 我没看到你这么忙 但最可取的是

  • 问题内容: 好的,很难用语言来描述它,但是假设我有一个存储指针的映射,并且想将操作的结果作为另一个键存储在我的哈希中: 这不起作用,并给我错误: 有什么想法吗? 问题答案: 指针是一个内存地址。例如,变量在内存中有一个地址。 像这样的运算结果没有地址,因为没有为其分配特定的内存。结果可能只存在于处理器寄存器中。 您必须分配可以将其地址放入映射中的内存。最简单,最直接的方法是为其创建局部变量。 请参