如何使用反射检查hibernate映射?

时间:2012-02-27 18:26:40

标签: java hibernate reflection

所以,我意识到这不是Hibernate的正常用例,但是......

我正在使用java反射来填充通过Hibernate使用注释配置保留的DTO类。 我需要反思性地找到@ManyToOne关系mappedBy属性,以便将反向链接从一个设置为多个。

代码:

class Router{
@OneToMany(targetEntity = Port.class, cascade = CascadeType.ALL, mapped = "router", fetch = FetchType.LAZY)
Collection<Port> ports;
}

class Port{
  @JsonBackReferene
  @ManyToOne(cascade = {CascadeType.ALL, fetch = FetchType.LAZY)
   Router router;
}

反射性地(和递归地),我从路由器开始填充DTO。当端口设置了所有属性(自动协商等)时,它将返回到路由器以添加到portList。 Port.router字段未设置,因为我无法找到一种方法来反复获取@ OneToMany.mappedBy值,这将让我知道端口中的哪个字段设置为路由器实例。

非常感谢任何建议!!!

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用反射API。像这样:

Class Cls = ... ;
cls.getField("xyz").getAnnotation(ManyToMany.class).mappedBy