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

我可以通过外键引用在给定表引用的数据库中查找表.特别是在
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.

点赞