如何在Spring JPA中为自动ID分配值

时间:2017-08-03 15:11:40

标签: java spring jpa spring-boot spring-data-jpa

@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)id!= null(已分配id),保留具有指定值的实体

请帮助

2 个答案:

答案 0 :(得分:0)

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

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

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

检查id是否存在,否则从数据库中获取

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

通过调用

获取序列ID
public Long getidFromSeq(){
 .......
String query="select SOME_SEQUENCE.nextVal from dual";
 .....
}

答案 1 :(得分:0)

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