java 中,hibernate如何通过实体类名获取映射表字段设定的最大长度?

J2EE 码拜 9年前 (2015-04-07) 1328次浏览 0个评论

如题,我想获取数据表中,某一个字段能够输入的最大长度!
现在我只知道这个实体类名和类的属性名,如何获取映射字段的最大长度?
想提醒一下,hibernate是通过@entity注解方式来映射的,恳请高人指点!
先谢了!

java 中,hibernate如何通过实体类名获取映射表字段设定的最大长度?
40分
可以用jdbc来获取

java 中,hibernate如何通过实体类名获取映射表字段设定的最大长度?
引用 1 楼 sc6231565 的回复:

可以用jdbc来获取

使用jdbc来获取的话,是不是意味着我重新连接数据库?有没有办法可以直接从hibernate那里获取?

java 中,hibernate如何通过实体类名获取映射表字段设定的最大长度?
引用 2 楼 wanlion 的回复:
Quote: 引用 1 楼 sc6231565 的回复:

可以用jdbc来获取

使用jdbc来获取的话,是不是意味着我重新连接数据库?有没有办法可以直接从hibernate那里获取?

hibernate的底层就是jdbc 
不需要重新连接就可以的
,就比如
Hibernate 不写hql 写sql一样

java 中,hibernate如何通过实体类名获取映射表字段设定的最大长度?
引用 3 楼 sc6231565 的回复:
Quote: 引用 2 楼 wanlion 的回复:
Quote: 引用 1 楼 sc6231565 的回复:

可以用jdbc来获取

使用jdbc来获取的话,是不是意味着我重新连接数据库?有没有办法可以直接从hibernate那里获取?

hibernate的底层就是jdbc 
不需要重新连接就可以的
,就比如
Hibernate 不写hql 写sql一样

我已经通过如下语句来获取到,不过有个缺点就是实体类中每个属性必须设置 @column ,否则获取不到字段的长度:
 

 Class clsEntity=Class.forName("com.controllon.modul." + entityName);
		if (clsEntity==null) {return 0;}
		Field tableColumn = clsEntity.getDeclaredField(column);
		if (tableColumn==null) {return 0;}
		javax.persistence.Column columnAnnotation = (Column) tableColumn.getAnnotation(Column.class);
		int len = 0 ;
		if (columnAnnotation==null) { 
			// 获取默认的长度
		} else {
			len = columnAnnotation.length() ;
		}



CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java 中,hibernate如何通过实体类名获取映射表字段设定的最大长度?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!