Java 从hibernate检索DB列长度?

Java 从hibernate检索DB列长度?,java,database,oracle,hibernate,Java,Database,Oracle,Hibernate,从hibernate检索Db列长度。我使用了: Property property = (Property)persistentClass.getProperty(propertyName); Column col = (Column)property.getColumnIterator().next(); int length = col.getLength(); System.out.p

从hibernate检索Db列长度。我使用了:

Property property = (Property)persistentClass.getProperty(propertyName);

                 Column col = (Column)property.getColumnIterator().next();

                 int length = col.getLength();

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



                System.out.print("\t  Column length :::");
                System.out.print(length);
我的表格结构是:

TYPE_ID          NUMBER                            
TYPE_NAME        VARCHAR2(200)                    
CREATION_DATE    DATE                             
CREATED_BY       VARCHAR2(200)  Y                
LAST_UPDATE_DATE DATE           Y                 
LAST_UPDATED_BY  VARCHAR2(200)  Y                                    
DISPLAY_NAME     VARCHAR2(200)  Y                                                 
ENABLED          VARCHAR2(1)    Y                    
DESCRIPTION      VARCHAR2(4000) Y  
我使用hibernate得到的结果是:

CREATED_BY        Column length :::255  STRING
CREATION_DATE     Column length :::255  TIMESTAMP
DESCRIPTION       Column length :::255  STRING
DISPLAY_NAME      Column length :::200  STRING
ENABLED           Column length :::255  STRING
LAST_UPDATED_BY   Column length :::255  STRING
LAST_UPDATE_DATE  Column length :::255  TIMESTAMP
TYPE_NAME         Column length :::200  STRING

请注意..

一般来说,Hibernate不关心底层数据库的外观,只要一切都在jdbc级别正常工作

获取所需信息的最安全方法是直接查询Oracle字典:

select COLUMN_NAME, DATA_LENGTH from USER_TAB_COLS where table_name = '<TABLE>';
从用户选项卡中选择列名称、数据长度,其中表名称=“”;

您可以将此作为本机查询执行,或者您可以将一个(可能是
@Immutable
)实体映射到
用户选项卡\u COLS
表,以利用JPQL/HQL和
EntityManager
/
会话
API。

映射中定义了什么长度值?@vanje我的映射中没有定义长度列。是否必须这样做?要从hibernate检索长度?不,这不是必需的。但如果定义长度时有任何区别,那将是有趣的。