Мне нужно получить имена столбцов для внешних ключей для всех отображаемых объектов спящего режима. Кто-нибудь знает как это сделать? Я попробовал sessionFactory.getClassMetadata - я могу видеть все имена и типы свойств для всех объектов там, но я не могу найти информацию о внешних ключах. Есть ли у кого-нибудь идеи? Я не могу использовать прямой запрос к базе данных - я должен извлечь его из спящего метаданных.Hibernate получить все внешние ключи для сопоставленных объектов
2
A
ответ
0
Вы можете использовать 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;
}
}
+1
Это не сработает, если используется стратегия именования. –
Смежные вопросы
- 1. Когда внешние ключи сгенерированы для связанных объектов
- 2. Получить все внешние ключи с помощью JDBC
- 3. Postgresql: получить все внешние ключи столбца jsonb
- 4. Висячие внешние ключи для зависимых объектов
- 5. Eclipse hibernate pojo generation включает внешние ключи
- 6. Как найти все внешние ключи?
- 7. Hibernate составные внешние ключи share column
- 8. Как заменить все внешние ключи?
- 9. Внешние ключи в ManyToMany Java + Hibernate + MySQL
- 10. Внешние ключи Java SQLite с Hibernate
- 11. Внешние ключи Hibernate ограничивают несколько баз данных
- 12. Как обрабатывать внешние ключи с базой объектов
- 13. indexeddb получить все ключи из магазина объектов
- 14. PostgreSQL: как индексировать все внешние ключи?
- 15. Соответственно изменение метода __setattr__ для сопоставленных объектов
- 16. Программно идентифицировать все внешние ключи, которые Cascade
- 17. Отбросьте все внешние ключи в таблице
- 18. Почему все мои внешние ключи недействительны?
- 19. Oracle: получить все ограничения/столбцы (первичные и внешние ключи)
- 20. показать все внешние ключи - SQL Anywhere
- 21. Oracle все ссылки на внешние ключи
- 22. Mysql: Программно удалить все внешние ключи
- 23. React JS - обработка событий для сопоставленных объектов
- 24. Внешние ключи для нескольких таблиц
- 25. Первичные ключи и внешние ключи?
- 26. Внешние ключи и вторичные ключи
- 27. LinqToEntities и внешние ключи
- 28. Неверные внешние ключи SQL Server
- 29. Как сделать конкретный запрос для сопоставленных объектов с гибернацией
- 30. Внешние ключи Django Queryset
http://stackoverflow.com/questions/2329588/how-do-i-get-name-of-the-target-table-and-column- – bdshadow
это не подходит. jdbc.getConnectionMetadata вернет отношения DATABASE, и мне нужно строго jpa-отношения (например, некоторые из внешних ключей еще не могут быть созданы на db) – cage
'Table.getForeignKeyIterator()' должен найти все внешние ключи для таблицы. Если я правильно помню, вы можете получить их из 'EntityManagerFactoryBuilderImpl.getHibernateConfiguration(). GetTableMappings()' –