从休眠中检索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
请建议..
答案 0 :(得分:1)
通常,Hibernate不关心底层数据库的外观,只要一切都在jdbc级别上正常工作。
获取所需信息的最安全方法是直接查询Oracle字典:
select COLUMN_NAME, DATA_LENGTH from USER_TAB_COLS where table_name = '<TABLE>';
您可以将其作为本机查询执行,或者您可以将(可能是@Immutable
)实体映射到USER_TAB_COLS
表以使用JPQL / HQL和EntityManager
/ Session
API。