Search code examples
jpamergeentitymanagerpersist

virtual column field not updated after entityManager.merge()


I have below scenario while updating Person entity..

My initial entity:

  • firstName:x
  • preferredFirstName:y
  • name:y (this values is calculated in the database. the logic is if preferredFirstName has value then name = preferredFirstName, else name = firstName)

updated entity:

        person.setFirstName("a");
        person.setPreferredFirstName("b");

now when I do em.merge(person); firstName and preferredFirstName are changed to a and b. But the name field in person entity still holds “y”

I tried:

  1. flush
  2. em.find(person, id)
  3. refresh

None of them seems to be working.

Does any one better way of getting the updated value of the virtual column?


Solution

  • doing em.flush() followed by em.refresh() did it.