当前位置:  开发笔记 > 编程语言 > 正文

从Hibernate映射中获取列长度?

如何解决《从Hibernate映射中获取列长度?》经验,为你挑选了2个好方法。

要验证我收到的数据,我需要确保长度不会超过数据库列长度.现在所有的长度信息都存储在Hibernate映射文件中,无论如何以编程方式访问这些信息?



1> James McMaho..:

根据Brian的回答,这就是我最终要做的事情.

private static final Configuration configuration = new Configuration().configure();

public static int getColumnLength(String className, String propertyName) {
    PersistentClass persistentClass = configuration.getClassMapping(className);
    Property property = persistentClass.getProperty(propertyName);
    int length = ((Column) property.getColumnIterator().next()).getLength();

    return length;
}

这似乎运作良好.希望这对任何偶然发现这个问题的人都有帮助.



2> Brian Deterl..:

你可以实现它,但这并不容易.您可能希望在启动时执行类似下面的操作并存储值的静态缓存.有许多特殊情况需要处理(继承等),但它应该适用于简单的单列映射.我可能遗漏了一些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();
    }
  }

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有