Если вы не доверяете провайдерам JPA (или не хотите их использовать), попробуйте согласовать аннотации (метаданные) JPA, полученные с помощью отражения, с метаданными JDBC, полученными с использованием ResultSetMetaData (например, см. здесь ).
Я не хочу сказать, что это будет просто, но при правильном подходе у вас должен быть довольно компактный набор вспомогательных методов для проверки базовых определений для каждой сущности. И пробег может варьироваться в зависимости от того, какую функциональность JPA вы хотите покрыть.