有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring JPA中为自动生成的ID赋值

@Entity
public class Categorie {

    private Long id;
    private String nom;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public Long getId() {
        return id;
    }
}

我需要的是:

1)id==null(未分配id),策略为自动递增

2)身份证!=null(已分配id),用分配的值持久化实体

请帮帮我


共 (2) 个答案

  1. # 1 楼答案

    为此,必须删除自动生成的注释。通过从数据库手动调用序列的nextval来获取自动生成的id,并编写本机查询,然后将其分配给实体

    从实体类中删除序列生成器

    @Id
    public Long getId() {
        return id;
    }
    

    检查id是否存在,或者从数据库中获取它

    if(catagorieObject.getId()==null){
    catogorieObject.setId(getidFromSeq()); 
    }
    

    通过调用

    public Long getidFromSeq(){
     .......
    String query="select SOME_SEQUENCE.nextVal from dual";
     .....
    }
    
  2. # 2 楼答案

    通过EntityManager#merge()合并实体实例,而不是使用EntityManager#persist()持久化实体实例