【问题标题】:Retrieve DB Column length from hibernate?从休眠中检索数据库列长度?
【发布时间】:2016-03-15 13:44:16
【问题描述】:

从休眠中检索 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

请指教..

【问题讨论】:

  • 映射中定义了哪些长度值?
  • @vanje 我的映射中没有定义长度列。是否需要这样做?从休眠中检索长度?
  • 不,这不是必需的。但如果在定义长度时有任何区别,那将会很有趣。

标签: java database oracle hibernate


【解决方案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。

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多