适用于null和非null值的Java Jpa @GeneratedValue智能生成

时间:2018-05-31 15:34:20

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

我的本​​地postgres数据库中有10-15个实体。 所有实体都包含一个Integer类型的标识。请参阅下面的代码片段。

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", unique = true, nullable = false)
@NonNull
private Integer id;

我的CRUD(T是我的实体)类包含用于将新实体插入适当的表

的create方法
private final JpaRepository<T, Integer> jpaRepository;
private final EntityManager entityManager;
private final Class<T> clazz;

@Override
public T create(T entity) {
    return getJpaRepository().saveAndFlush(entity);
}

我正在努力实现下一个目标:

  1. 如果我调用create方法,其中实体包含id字段的某个值(!= null),则将其与该id(未生成)完全保存。
  2. 如果我调用create方法,其中实体包含值== null - 然后使用自动生成的id作为数据库提供创建它。
  3. 为什么我需要这个? 我正在尝试使用从JSON实体获取的实体填充内存中的小型数据库,并使用相同的id保存它。

    我的问题是注释@GeneratedValue(strategy = GenerationType.AUTO/SEQUENCE/TABLE/IDENTITY)没有给我这样的东西。 如果我删除GeneratedValue注释,则null值将无法正确处理。

    我将非常感谢您的建议。

    添加评论折扣

0 个答案:

没有答案