如何获取JPA @Entity的PK(@Id)的字段名

时间:2014-03-04 18:13:41

标签: spring hibernate jpa-2.0 primary-key

我正在使用JPA2(Hibernate 4)并且有一堆@Entity类,我的PK使用@Id定义。我如何以编程方式检索每个实体类的PK的字段名?

这样做的商业案例是我想使用Spring的BeanUtils.copyProperties方法复制实体对象,但是要确保在复制时忽略我的实体的id字段。

有没有办法找到这些信息? JPA是否提供此信息?我意识到我可以使用反射来完成每个课程,但希望有一个更简单的解决方案。我查看了扫描类的PropertyDescriptor,但似乎无法在PropertyDescriptor上找到任何可以给我注释属性的方法。

1 个答案:

答案 0 :(得分:1)

试试这个:

@PersistenceUnit
private EntityManagerFactory emf;

Metamodel metamodel = emf.getMetamodel();
metamodel.entity(MyEntity.class).getId();