为了验证我收到的数据,我需要确保该长度不会超过数据库列的长度。现在,所有长度信息都存储在Hibernate映射文件中,是否可以通过编程方式访问此信息?
您可以实现,但这并不容易。您可能想要在启动时执行以下操作,并存储值的静态缓存。有很多特殊情况要处理(继承等),但它应适用于简单的单列映射。我可能遗漏了一些instanceof和null检查。
for (Iterator iter=configuration.getClassMappings(); iter.hasNext();) { PersistentClass persistentClass = (PersistentClass)iter.next(); for (Iterator iter2=persistentClass.getPropertyIterator(); iter2.hasNext();) { Property property = (Property)iter2.next(); String class = persistentClass.getClassName(); String attribute = property.getName(); int length = ((Column)property.getColumnIterator().next()).getLength(); } }