如何使用 Hibernate 从数据库中检索列的 java 数据类型?

1 java types hibernate

我想使用 hibernate 检索 MySql 中表的列的 java 数据类型,以便在插入数据库时​​可以动态地将输入数据转换为相应的数据类型。

一种方法是读取class-name.hbm.xml并检索数据类型信息,但我希望数据类型直接来自数据库,而不是来自任何配置 XML,因为 XML 可能是错误的。

另一种方法是使用AbstractEntityPersister.getPropertyType(column-name).toString()but 返回 hibernate 数据类型而不是相应的 java 类型。

有什么办法可以实现这个目标吗?

Mik*_*e Q 5

执行以下操作(有点hacky)

    Class clazz = ...;
    SessionFactory sessionFactory = ...;

    ClassMetadata classMetadata = sessionFactory.getClassMetadata( clazz );

    // bit of a hack, relies on knowing that SessionFactoryImpl implements Mapping
    Mapping mapping = (Mapping)sessionFactory;

    for ( String propertyName : classMetadata.getPropertyNames() )
    {
        Type type = classMetadata.getPropertyType( propertyName );

        if ( type.isCollectionType() )
            continue;

        // TODO: do something with the result
        type.sqlTypes( mapping );
    }
Run Code Online (Sandbox Code Playgroud)