gpt4 book ai didi

java - Spring boot - 在保存对象时根据id字段保存非id字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:52 26 4
gpt4 key购买 nike

我在 spring 引导类中有一个自动递增的 id 字段:

private long id //or it can be int, does not matter

我在同一个类中还有另一个字段,它必须是唯一的和字母数字的:

private String code;

此字段将有 6 个字母数字(大写或小写无关紧要)。

是否可以使用这种方法在为该类创建新对象时自动保存该字段?

Long.toString("id_field_value",36);

实际上,它给出了:

0 -> 0
1 -> 1
10 -> A

因此,当创建第一个对象时,id 将为 1。

有什么建议吗?

例如,当我保存Person对象时,

使用 JPA - hibarnate,id 将自动为 1。

我还希望自动保存另一个字段,这取决于 id 字段。

所以,id是1,那string code也一定是1。

我应该在创建对象后执行此操作吗?喜欢:

Person person = personRepository.save(person3);person.setCode(person.getId().toString);//或其他函数

最佳答案

您可以尝试使用 @PostPersist 注解。一旦持久化,您的实体中就会有一个 id。像这样的东西:

@PostPersist
private void postPersist() {
this.setCode( generateMyCode( getId() ) );
}

只要使用 EntityManager 就可以正常工作,字段代码也应该保存到数据库中。

当使用 Spring 存储库时,可能需要在初始保存后执行额外的 save()(我不必这样做,只有默认配置),但您应该使用您的配置测试此方法。

(与使用 EntityManager 的 JPA 标准用法相比,Spring 存储库处理持久性上下文的方式略有不同。)

关于java - Spring boot - 在保存对象时根据id字段保存非id字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com