我点击了以下链接: 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。
有什么建议吗?
答案 0 :(得分:0)
是的,有可能。
您可以使用其他方法生成代码,该方法将返回您的字母数字值,并将code
属性设置为随机方法的返回值
答案 1 :(得分:0)
在长字段中尝试以下注释:
@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