Java 从hibernate检索DB列长度?
从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
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检索长度?不,这不是必需的。但如果定义长度时有任何区别,那将是有趣的。