views:

45

answers:

2

Let's say we have an entity object. Is there a way to extract a primary key from it?

I want to do something like this:

public static Object extractPrimaryKey(EntityManager em, Object obj) {
    return em.giveMeThePrimaryKeyOfThisEntityObject(obj);
}

Reason for that is to get an attached copy of detached entity:

public static Object attach(EntityManager em, Object obj) {
    return em.find(obj.getClass(), extractPrimaryKey(em, obj));
}

Is it possible? (I am using EclipseLink 2.1)

+2  A: 

Perhaps this will work:

em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(obj);
axtavt
+2  A: 

Reason for that is to get an attached copy of detached entity:

Why don't you just use EntityManager#merge(T)??

MyEntity detached = ...
MyEntity attached = em.merge(detached);

What's the problem with that?

Pascal Thivent
merge will update the database. I do not want it.
iimuhin
@iimuhin Ah yes, makes sense :)
Pascal Thivent