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

07-24 13:47