我想使用 hibernate 检索 MySql 中表的列的 java 数据类型,以便在插入数据库时可以动态地将输入数据转换为相应的数据类型。
一种方法是读取class-name.hbm.xml并检索数据类型信息,但我希望数据类型直接来自数据库,而不是来自任何配置 XML,因为 XML 可能是错误的。
另一种方法是使用AbstractEntityPersister.getPropertyType(column-name).toString()but 返回 hibernate 数据类型而不是相应的 java 类型。
有什么办法可以实现这个目标吗?
执行以下操作(有点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)
| 归档时间: |
|
| 查看次数: |
3666 次 |
| 最近记录: |