Here is a quick one, I will show you how to extract the primary key and the value from a hibernate entity.
It took me a while to look at the API and see what I need to use, but after swimming in the API it was a couple of lines that got it all done.
First thing that you need to do is load the entity
Parent parent= parentDao.getEntityById(1L);
Once you load the entity call the following methods (code for the methods will follow)
System.out.println("print primary key: " + HibUtil.extractPrimaryColumn(parent.getClass()) ); System.out.println("print primary key value: " + HibUtil.extractPrimaryKeyValue(parent,Parent.class) );
Extract primary column name
Here is the code for the first method -> extractPrimaryColumn
Nothing hard about this. First, we load the PersistentClass based on our entity. If all the hibernate mappings are set up correctly there shouldn’t be any problems.
Once we have the PC we then call this method to get the name of the primary key -> getIdentifierProperty().getName();
public static String extractPrimaryColumn(Object entity) { PersistentClass localPC = extractPersistentClass(entity); //Get pk column and value String name = null; try { name = localPC.getIdentifierProperty().getName(); } catch (PropertyNotFoundException pnfe) { logger.info("Hib util, property not found",pnfe); } catch (MappingException me) { logger.info("mapping not found",me); } catch (HibernateException he) { logger.info("hibernate exception........but why??",he); } catch (NullPointerException npe) { logger.info("we have a problem getting a value for this entity",npe); } return name; }
Extract the value
Second method uses almost the same logic -> extractPrimaryKeyValue
After we get the PC we call the following methiod to get the value of the key -> pkValue = (Long) localPC.getIdentifierProperty().getGetter(clazz).get(entity);
public static Long extractPrimaryKeyValue(Object entity, Class clazz) { PersistentClass localPC = extractPersistentClass(entity); //Get pk column and value Long pkValue = null; try { pkValue = (Long) localPC.getIdentifierProperty().getGetter(clazz).get(entity); } catch (PropertyNotFoundException pnfe) { logger.info("Hib util, property not found",pnfe); } catch (MappingException me) { logger.info("mapping not found",me); } catch (HibernateException he) { logger.info("hibernate exception........but why??",he); } catch (NullPointerException npe) { logger.info("we have a problem getting a value for this entity",npe); } return pkValue; }
In my next post I will expend and show you how I use this code.
January 10th, 2012
by Robert Golabek in Technology
⟵ Back
See more:
December 10th, 2021
Cloud Composer – Terraform Deploymentby Patryk Golabek in Data-Driven, Technology
December 2nd, 2021
Provision Kubernetes: Securing Virtual MachinesAugust 6th, 2023
The Critical Need for Application Modernization in SMEs