我们是否可以通过编程方式找到Hibernate实体的主键字段(类似于JPA的PersistenceUnitUtil
)?
最佳答案
SessionFactory
提供了一种称为getClassMetadata()的方法来获取类(即ClassMetadata)的元数据对象。
要获取实体的标识符属性的名称,请使用ClassMetadata.getIdentifierPropertyName()
ClassMetadata employeeMeta = sessionFactory.getClassMetadata(Employee.class);
System.out.println("Name of the identifier property of the employee entity :" + employeeMeta .getIdentifierPropertyName());
要获取受管实体实例的标识符属性的值,请使用ClassMetadata.getIdentifier(Object entity, SessionImplementor session)
例如 :
假设您有一个从 session 加载的受管实体实例:
List<Employee> employeeList = (List<Employee>)session.createQuery("from Employee where gender ='F'").list();
ClassMetadata employeeMeta = session.getSessionFactory().getClassMetadata(Employee.class);
for (Employee employee : employeeList ) {
System.out.println("Value of the Primary key:" + employeeMeta.getIdentifier(employee , session) );
}
关于hibernate - 查找Hibernate实体的主键字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9799969/