2016-03-14 60 views
0

是否有可能从休眠状态检索数据库列长度?休眠列长度

Property property = (Property)persistentClass.getProperty(propertyName); 
       ((Column)property.getColumnIterator().next()).getLength(); 


       System.out.print(persister.getPropertyColumnNames(propertyName)[0]); 

这会重试实体类对象的长度,而不是db列的长度。

回答

0

不是从Hibernate直接,而是间接地通过使用数据库供应商特定的本机查询。对于Oracle,您可以查询该表ALL_TAB_COLUMNS:

SELECT DATA_TYPE, DATA_LENGTH 
FROM all_tab_columns 
where owner = 'SCHEMA_OWNER' 
and TABLE_NAME = 'MY_TABLE' 
and COLUMN_NAME = 'MY_COLUMN'; 

这将返回是这样的:

DATA_TYPE DATA_LENGTH 
------------------------ 
VARCHAR2  36 

SQL服务器似乎有一个类似的特性: http://geekswithblogs.net/AskPaula/archive/2008/07/31/124161.aspx

+0

谢谢@MirandaVeracruzDeLaHoyaCardina但我!需要一种从休眠状态获取大小的方法。你有任何等价的hql查询吗? –

+0

我不认为这是可能的。 – MirandaVeracruzDeLaHoyaCardina