users@jpa-spec.java.net

[jpa-spec users] Re: Possibly make the TABLE-generated IDs available on @PrePersist?

From: Jin Kwon <jinahya_at_gmail.com>
Date: Tue, 16 Aug 2016 20:24:39 +0900

@Oliver
When GenerationType.TABLE used,
AS should fetch and prepare some ID values (by
TableGenerator#allocationSize) regardless entity lifecycle
and assign one of them for each entity.
That's the very different feature against IDENTITY/SEQUENCE which each has
to insert first and read the engine-generated(assigned) value.

On Tue, Aug 16, 2016 at 7:47 PM, Oliver Gierke <ogierke_at_pivotal.io> wrote:

> Hi Jin,
>
> I might be missing something obvious here but @PrePersist effectively
> implies *before* any database interaction. So how can the database
> generated be available at this time already?
>
> Cheers,
> Ollie
>
> > Am 09.08.2016 um 11:26 schrieb Jin Kwon <jinahya_at_gmail.com>:
> >
> > JSR338/3.5.3 specified that
> >
> > Generated primary key values are available in the PostPersist method.
> >
> > Is it possibly to specify TABLE-generated IDs available on PrePersist?
> >
> > e.g.
> > public class MyEntity {
> >
> > @PrePersist
> > private void onPrePersist() {
> > // make derived as a unique value derived from the id
> > derived = String.format("%016x", id);
> > }
> >
> > @GeneratedValue(..., strategy = GenerationType.TABLE)
> > @Id
> > private Long id;
> >
> > @Column(..., nullable = false, updatable = false)
> > private String derived;
> > }
>