Может кто-нибудь знает универсальный способ, как получить primary key у какой-либо entity. Она может быть как аннотированной (@Entity), так и объявленной в *.hbm.xml. entity могут быть любые, из каких-либо библиотек, поэтому вариант, чтобы они все реализовывали какой-либо интерфейс, содержащий метод getId() не подходит. Можно конечно предположить, что именно метод getId() возвращает этот ключ и вызывать его через рефлексию, но где-нибудь можно и обломаться. У EntityManager никаких похожих методов нет :( Если рассматривать только классы, маппинг которых объявлен при помощи аннотаций, то здесь можно просто искать метод с аннотацией @Id и всё. Но нужно ещё как-то с xml маппингом решать. |