hibernate - 查找Hibernate实体的主键字段

标签 hibernate primary-key

我们是否可以通过编程方式找到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/

相关文章:

ios - iOS 上的 Realm : crash while creating nested object with primaryKey

mysql - 在 mysql 迁移到 postgres 后重新启动主键序列,最重要的是为参照完整性方面保留旧数据

java - void 方法何时返回控制权?

java - 我可以使用 Spring 将使用 @Entity 注解的模型类实例注入(inject)到 Controller 中吗?

java - 2 个表的序列中的相同 ID - JPA

java - Hibernate Criteria.list() 导致 java.lang.ClassCastException

MySQL FK 错误 1005 - 与 FK 相同的 PK

sql - Postgres - 插入和复合外键

database - 是否有充分的理由让数据库表没有整数主键?

java - hibernate 中的魔法 npe