Hi, I have mapped class in JPA. :
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class User {
private Long id;
private Long name;
//getters and setters go here
....
}
I also have a subclass of this class, called Admin:
@Entity
public class Admin extends User {
private String cridentials;
//getters and setters go here
....
}
Now in my code I have managed instance of User attached to the session
...
User user = entityManager.find(User.class, userId)
I need to transform this user to its subclass, Admin. This means I need 'User' table data remain untouched and new row to be inserted into 'Admin' table:
javax.persistence.EntityManager entityManager = ...;
...
User user = entityManager.find(User.class, userId)
Admin admin = new Admin();
admin.setName(user.getName());
entityManager.persist(admin);
But after I execute the last line, another row is inserted in both User and Admin tables. How would I solve this?
The only way I found so far is to save the fields of a User somewhere, then delete this instance from DB, and then create new Admin with all the data from User class. But I bet there is much better way of doing this.
Thanks