Issue
I'm expected to expose through Spring Boot 2.5 a legacy relational schema where the primary key is computed by the DBMS on the basis of an identity field along the following lines:
create table items
(
serial int identity,
id as '/items/' + convert(varchar(12), serial) persisted primary key,
…
)
My issue is that JPA/Hibernate seem to assume that the primary key is always going to be generated on the server side and we don't apparently have a suitable generation strategy:
@Entity
@Table(name="items")
public static class ItemEntity {
@Id
@GeneratedValue(strategy="{???}")
private String id;
…
}
Any chances of instructing JPA/Hibernate just to accept the generated value without trying to write it?
Solution
That's exactly what the IDENTITY strategy is for. This strategy assumes that the ID is generated in the database.
@Entity
@Table(name="items")
public static class ItemEntity {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private String handle;
…
}
Answered By - Simon Martinelli