java - 如何使用反射从 JPA 对象检索私有(private)变量属性

标签 java jpa reflection

我的目标之一是创建一个引擎,该引擎将使用反射动态地从 JPA 对象设置 pojo 对象中的值。匹配标准之一是字段名称应该匹配。

我成功地为两个 pojo 对象实现了这一点。但是当我尝试使用 JPA 对象作为对象参数之一时,它不起作用。根据我的研究,我发现方法 Class.getDeclaredFields() 并没有给出字段的名称,而是给出 JPA 对象的成员变量的 getter/setter 方法名称。

任何人都可以给我指导或指导,告诉我我应该在哪里/做什么来完成这项任务吗?

最佳答案

JPA 提供商经常使用 dynamic proxy classes的具体 JPA 类,因此您无法保证代理中的字段名称。关于代理的唯一保证是方法是相同的。使用调试器检查您尝试使用的 JPA 类实例的运行时类,您就会发现问题。

您能做的最好的事情就是使用反射来调用 JPA 返回的对象上的方法。

<小时/>

除此之外,我真的不明白为什么你需要 POJO 化实体类,因为实体主要是带注释的... POJO。

关于java - 如何使用反射从 JPA 对象检索私有(private)变量属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11804598/

相关文章:

java - 单击图像旁边时降低分数,但停止于 0

java - Servlets , JPA - 登录问题

java - 如何使用 JPA 规范中的另一个公共(public)实体加入两个实体?

Java反射: how to call a method with private interface as argument?

c# - 使用反射从字符串中获取属性值

java - 如何在 JavaEE 中实现一个持续运行的进程

java - 制作图形按钮到JPanel

java - 在 App Engine Standard (Java 8) 中使用 Spring Boot Web 应用程序时出现空白页面

java - JPA 继承 : Mapped Superclass vs Table Per Class

python - 在运行时递归遍历 Python 继承树