【发布时间】:2019-12-18 09:26:53
【问题描述】:
我有带有@Id(主键)的对象,这是一些业务 UIID 字段,出于某些原因我想要另一个 Long 技术 ID,但是在保存对象时我从 getObjectId 字段中得到 null:
@Id
private String id;
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "object_id")
private Long objectId;
public Long getObjectId() {
return objectId;
}
public void setObjectId(Long objectId) {
this.objectId = objectId;
}
我有这个存储类:
interface MyObjectStorage extends JpaRepository<MyObject, String>
这就是我保存它的方式:
final MyObject saved = storage.saveAndFlush(toSave);
saved.objectId is null here..
在我的 MySQL 数据库中,objectId 字段被标记为非空自动增量..
PS。而且我不希望 JPA 在执行 findById 时使用这个 objectId 字段。
【问题讨论】:
-
可以用数据库序列实现stackoverflow.com/questions/51633747/…
-
但是我必须用@Id 注释标记这个字段吗?我不希望 JPA 在执行 findById 时使用此字段。然后必须使用 String id 字段..
-
请看一下这篇帖子的答案stackoverflow.com/questions/277630/…
-
这能回答你的问题吗? Hibernate JPA Sequence (non-Id)
-
好的,我看到这些帖子与我的需求有关,谢谢!
标签: java jpa spring-data-jpa