如何解决在Java Springboot中为mySQL自定义生成的具有持久序列的列值
| id | name | reference|
我当前在 spring-jpa 中使用 spring-boot 。
当我保留该实体时,只有当它为null时,才有一种方法可以使参考列以自定义方式自动生成。例如:
INSERT INTO my_table(name,reference) VALUES('John','MREF-System-0940');
将产生如下结果
| id | name | reference |
| 1 | John | MREF-System-0940 |
但是当我执行以下命令
INSERT INTO my_table(name) VALUES('John');
将产生如下结果(其中引用基于'REF- {name}-{sequence}',其中sequence可以是id或预定义的持久性序列)
| id | name | reference |
| 2 | John | REF-John-2 |
当持久化实体时,如果检测到参考列 reference ,则应自动生成该列。
如果可能,我们可以在末尾附加生成的 id 列吗?如果没有,那么是否存在这样一种自动生成引用的可行方法。
意思是
INSERT INTO my_table(name) VALUES('Bob');
它可能会产生如下结果
| id | name | reference |
| 3 | Bob | REF-Bob-001 |
解决方法
要使JPA生成字段值,您应该使用myEntityRepository#save
而不是本机修改查询。
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
String name;
String reference;
public MyEntity(String name) {
this.name = name;
}
//getters,setters,toString,hashcode,equals
@PostPersist
public void setReferencePostPersist(){
if(id != null) {
reference = "REF-" + name + "-" + id;
}
}
}
然后
@Autowired
MyEntityRepository repository;
public MyEntity saveNewMyEntity(String name) {
MyEntity myEntity = new MyEntity(name);
return repository.save(myEntity);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。