After an entity is fetched using the JpaRepository
methods of Spring Data JPA, e.g. findOne
, findBy...
, etc., I was wondering what would be the best way to automatically execute some custom code, say to initialize some transient fields.
In other words, suppose I have a User entity with a fullName
transient field, which should be set as a concatenation of firstName
and lastName
after fetching from the database, what should I do?
Firstly, if all you want if full name just write a method that concatenates forename/surname on the fly. It doesn't have to be a field.
If you really need to do some processing on Entity load then register a @PostLoad
entity lifecycle callback:
public class MyEntity{
@PostLoad
//invoked by framework on entity load.
public void doStuff(){
fullName = forename + " " + surname;
}
//alternative
public String getFullName(){
return forename + " " + surname;
}
https://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Example_of_Entity_event_annotations