所以,我意识到这不是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值,这将让我知道端口中的哪个字段设置为路由器实例。
非常感谢任何建议!!!
谢谢!
答案 0 :(得分:2)
您可以使用反射API。像这样:
Class Cls = ... ;
cls.getField("xyz").getAnnotation(ManyToMany.class).mappedBy