Я полагаю, вы ищете то же самое, что я искал ... и нашел!
Я использую собственные шаблоны Hibernate для генерации своего кода Java. Я просто взял их копию и начал бездельничать. Звучит страшнее, чем есть - поверь мне.
Я добавил следующий код в файл PojoFields.ftl :
// These static property values are being generated by the POJO templates (PojoFields.ftl)
<#foreach field in pojo.getAllPropertiesIterator()>
<#if pojo.getMetaAttribAsBool(field, "gen-property", true)>
<#assign name = pojo.getPropertyName(field) type = pojo.getJavaTypeName(field, jdk5)>
public static final String ${field.name}_propname = "${field.name}";
<#foreach column in field.getColumnIterator()>
<#if pojo.getJavaTypeName(field, jdk5) == "String">
public static final int ${field.name}_len = ${column.getLength()?c};
<#break>
</#if>
</#foreach>
</#if>
</#foreach>
Для всех свойств генерируется общедоступная конечная статическая строка с именем свойства.
Для свойств String генерируется общедоступное конечное статическое int с длиной поля.
public static final String postalCode_propname = "postalCode";
public static final int postalCode_len = 15;
Пока я всегда использую эти статические переменные и никогда не кодирую их значения жестко, я буду избегать ошибок RunTime, связанных с изменением структуры базы данных.
Примеры:
Criteria criteria = session.createCriteria(ClPost.class).add(
Restrictions.ne(ClPost.postalCode_propname, "90210"));
String hql = "select e." + ClPost.postalCode_propname
+ " from " + ClPost.class.getSimpleName() + " as e";