java - 通过多对一或一对一关系查找引用给定类的所有类

标签 java hibernate annotations

我可以通过外键引用在给定表引用的数据库中找到表。具体在mysql中,是通过:

SELECT * FROM REFERENTIAL_CONSTRAINTS WHERE REFERENCED_TABLE_NAME = 'table_name';

我想通过java代码实现这个功能。

也就是说,我想找到所有通过多对一或一对一关系引用给定类的类

最佳答案

这可以在 NHibernate(不是 Hibernate)中完成,如下所示。

IList<string> classList = new List<string();
ICollection<PersistentClass> persistentClasses = Configuration.ClassMappings;
foreach (var persistentClass in persistentClasses)
{
    foreach (var property in persistentClass.PropertyIterator)
    {
         if(property.Type.IsAssociationType == true && property.Type.ReturnedClass.Name == "GivenClassName")
         {
             classList.Add(persistentClass.EntityName);
         }
    }
}
return classList;

所有类映射都在一个集合中检索并迭代以找到它们的属性与给定类之间的关联。 我认为 Hibernate 也有类似的 API,所以这也可以在 Hibernate 中完成。 另请注意,此代码是在 C# 中编写的,但我认为也许您也可以在 Java 中编写类似的代码。

参见 this answer它在 Hibernate 中演示了类似的 API。

关于java - 通过多对一或一对一关系查找引用给定类的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15809212/

相关文章:

java - EditText 没有为测验应用程序的满分添加分数

java - 无法更改 GlassFish 中的 TopLink 日志记录级别

java - 迁移到 Tomcat 8 : InstanceAlreadyExistsException datasource

java - 通过 SOAP 传输的 JPA 延迟加载集合

java - JSR-305 的 JSR-308 扩展?

java - 为什么我必须使用全新的行来单独打印变量?

java - 使可嵌入类的字段从 JPA 中的嵌入类 transient 化

java - 异常 : org. hibernate.MappingException:实体映射中的重复列

grails - SpEL中的枚举可用于grails spring安全注释?

java - 如何确保在开始返回 bean 之前将资源注入(inject)到我的配置中?