Java 主键值在Spring boot中得到更新

Java 主键值在Spring boot中得到更新,java,hibernate,maven,spring-boot,primary-key,Java,Hibernate,Maven,Spring Boot,Primary Key,我使用SpringBoot和MySQL数据库创建了一个maven项目 我有两个实体类,一个实体类中有一个主键,另一个实体类中有一个复合主键 java(具有主键) java(Item.java的Idclass) java(具有复合主键) 这里的问题是,当实体对象通过repository对象持久化时,其id已经存在于表中,Spring boot JPA不会抛出主键id已经存在的错误或类似的错误。相反,尝试持久化的对象的详细信息将更新为已经可用的主键数据。复合主键实体也是如此 我这边有什么问题吗?或者

我使用SpringBoot和MySQL数据库创建了一个maven项目

我有两个实体类,一个实体类中有一个主键,另一个实体类中有一个复合主键

java(具有主键)

java(Item.java的Idclass)

java(具有复合主键)

这里的问题是,当实体对象通过repository对象持久化时,其id已经存在于表中,Spring boot JPA不会抛出主键id已经存在的错误或类似的错误。相反,尝试持久化的对象的详细信息将更新为已经可用的主键数据。复合主键实体也是如此

我这边有什么问题吗?或者我应该怎么做


提前感谢。

如果您正在使用
crudepository
中的
save
方法,那么您需要了解,如果保存id(主键)为null的实体,那么它将生成一个新id(根据实现自动递增)并保存记录。但是,如果在
save
方法中传递了数据库中已存在的id为的实体,则该实体将更新该实体。 我希望你明白我的意思。
请看一下。

如果您使用
crudepository
中的
save
方法,那么您需要了解,如果保存id(主键)为null的实体,那么它将生成一个新id(根据实现自动递增)并保存记录。但是,如果在
save
方法中传递了数据库中已存在的id为的实体,则该实体将更新该实体。 我希望你明白我的意思。
请看一看。

您使用哪种方法进行持久化?您使用哪种方法进行持久化?是否有一种方法会返回重复id的异常?@PradeepKr您可以检查数据库中是否已经存在该id,并自行引发异常。我不确定其他机制。是否有一种方法会返回重复id的异常?@PradeepKr您可以检查数据库中是否已经存在该id,然后自己引发异常。我不确定其他机制。
@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    private String address;
    private String gstin;
    private String phoneNumber;

    @CreatedDate
    private Date createdDate;

    @LastModifiedDate
    private Date updatedDate;

//Getters and setters
}
public class ItemId implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private Long id;

    private Long billNo;
//Getters and Setters
}
@Entity
@IdClass(ItemId.class)
public class Item {
    @Id
    private Long id;

    @Id
    private Long billNo;

    private String particular;

    private String hsnCode;

    private Double quantity;

    private String quantityUnit;

    private Double rate;

    private String rateUnit;

    private Double price;

    @CreatedDate
    private Date createdDate;

    @LastModifiedDate
    private Date updatedDate;
//Getters and setters
}