【问题标题】:How to save a field to which long id will be converted in spring boot如何保存将在spring boot中将long id转换为的字段
【发布时间】:2018-11-12 08:41:30
【问题描述】:

我点击了这个链接: https://vladmihalcea.com/how-to-map-calculated-properties-with-hibernate-generated-annotation/

这是我的源代码:

private String firstName;

private String lastName;

private String middleName1;

private String middleName2;

private String middleName3;

private String middleName4;

private String middleName5;

@Generated( value = GenerationTime.ALWAYS )
@Column(columnDefinition =
    "AS CONCAT(" +
    "   COALESCE(firstName, ''), " +
    "   COALESCE(' ' + middleName1, ''), " +
    "   COALESCE(' ' + middleName2, ''), " +
    "   COALESCE(' ' + middleName3, ''), " +
    "   COALESCE(' ' + middleName4, ''), " +
    "   COALESCE(' ' + middleName5, ''), " +
    "   COALESCE(' ' + lastName, '') " +
    ")")
private String fullName;

它使用其他 string 字段来生成 fullname 字段。

我想要的是不同的东西。

我在 Spring Boot 类中有一个自动增量 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。

有什么建议吗?

【问题讨论】:

  • 要根据id生成code字段吗?
  • @EugenCovaci 是的。两者都是独一无二的,因此无需使用其他方法来生成另一个字母数字。 id 已经递增并自动生成。

标签: java spring jpa


【解决方案1】:

是的,有可能。

您可以使用其他方法生成代码,该方法将返回您的字母数字值并将code 属性设置为您的随机方法的返回值

【讨论】:

  • 不,我希望将 id 值转换为该字段。不是另一个
  • 我不清楚你在问什么,但你可以使用.flush() 来获取持久化对象的 id。
  • 它会自动保存 id。例如 id 为 9000。code 字段将是 long 值 9000。它将自动保存
【解决方案2】:

在您的长字段上尝试以下注释:

@Id   
@GeneratedValue(strategy = GenerationType.AUTO)
@SequenceGenerator(name="id_sequence", sequenceName="id_sequence", allocationSize=1)
private long id

使用休眠保存这个持久性对象。确保您的架构中有一个具有指定名称的序列。

可以通过以下方式创建架构:

CREATE SEQUENCE schema_name.id_sequence
    INCREMENT BY 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    START 1;

如果您需要参考,可以参考link

【讨论】:

  • 非id字段。
  • 我相信,如果您删除 @Id 注释并保持一切原样,一切都会好起来的。
猜你喜欢
  • 2015-03-26
  • 2020-12-02
  • 2019-10-06
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
相关资源
最近更新 更多