Hibernate获取映射实体的所有外键 [英] Hibernate get all foreign keys for mapped entities

查看:80
本文介绍了Hibernate获取映射实体的所有外键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为所有映射的hibernate实体获取外键的列名。有谁知道这是怎么做到的吗?
我通过sessionFactory.getClassMetadata尝试过 - 我可以看到所有实体的所有属性名称和类型,但我找不到有关外键的信息。
有没有人有任何想法?我可能不会使用直接数据库查询 - 我必须从hibernate元数据中提取它。 您可以使用Java反射:

  //循环连接具有@JoinColumn注解的列
for(Method method:testClass.getMethods())
{
if(method.isAnnotationPresent(JoinColumn.class))
{
//名称参数是外键
字符串foreignKey = method.getAnnotation(JoinColumn.class).name ;

//如果明确定义referencedColumnName
字符串foreignKey = method.getAnnotation(JoinColumn.class).referencedColumnName;
}
}


i need to get the column names for foreign keys for all mapped hibernate entities. Does anyone know how to do that? I tried by sessionFactory.getClassMetadata - i can see all the properties names and types for all entities there, but i cannot find information about foreign keys. Does anyone have any idea? I may not use direct database query - i must extract it from hibernate metadata.

解决方案

You can use Java Reflection:

// Loop through joined columns that has @JoinColumn annotation
for (Method method : testClass.getMethods())
{
    if (method.isAnnotationPresent(JoinColumn.class))
    {
         // name parameter is foreign key
         String foreignKey = method.getAnnotation(JoinColumn.class).name;

         // if the referencedColumnName is explicitly defined
         String foreignKey = method.getAnnotation(JoinColumn.class).referencedColumnName;
    }
}

这篇关于Hibernate获取映射实体的所有外键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆