日期:2014-05-19  浏览次数:20680 次

Hibernate中怎么得到表名及字段名?
hibernate中,实体是用anntation方式进行映射的,怎么样能够得到表名?
意思就是:现在只知道实体类的名字,比如说:com.test.User。我要怎么得到User这个实体对应表名,及其所有的字段名?


分不多,感谢高人解答
------最佳解决方案--------------------
重新new一个AnnotationConfiguration当然是不可行,因为只在原来的cfg中才会有记录哪些类已经映射上去了。

如果你重新new了一个AnnotationConfiguration,也可以调用方法cfg.addAnnotatedClass(clz),这样再getClassMappings就可以了
------其他解决方案--------------------
保留原来的AnnotationConfiguration cfg对象

调用cfg.getClassMappings(),循环这个Iterator

RootClass clz = (RootClass) it.next();
clz.getTable().getName()

这个就是表名了。
------其他解决方案--------------------
这样是不可以的,除非你自己解析*.hbm.xml这样里面就有了。但是如果不想解析就只有创建一个表,将这两个联系起来才能得到,再或者就是将表名和类名,字段名和类的属性名设置成一模一样的。
否则无法实现
------其他解决方案--------------------
字段名就是clz.getTable().getColumnIterator()

Column col = colIt.next();

这样就可以
------其他解决方案--------------------
都得到了,还要hbm.xml干啥,本来hiber就是不让你关心数据库方便的地东西,专心搞对象(谈恋爱)
------其他解决方案--------------------
应该可能在*.hbm.xml里,获得吧,如果你想得到可能要用DOM4J来获得
------其他解决方案--------------------
User.class.getAnnotations()
这个方法可以把类里面的注解都拿出来
LZ你可以拿出来以后看看有没有你感兴趣的信息吧
------其他解决方案--------------------
首先谢谢楼上的三位朋友。
可你们都看错题目了。我现在是用annotation的方式映射的,不是xml的方式。

------其他解决方案--------------------
引用:
保留原来的AnnotationConfiguration cfg对象

调用cfg.getClassMappings(),循环这个Iterator

RootClass clz = (RootClass) it.next();
clz.getTable().getName()

这个就是表名了。


这位朋友,不知道重新new一个AnnotationConfiguration行不行?
cfg.getClassMappings()得到的是空。我很郁闷。如果是xml方式则可以。
------其他解决方案--------------------
hibernate有自带的数据库映射文件
------其他解决方案--------------------
引用:
hibernate有自带的数据库映射文件

我是用Annotation的方式映射的,没有配置文件
------其他解决方案--------------------
用@Table(name="表名")试试
   不知道说的合不合楼主意,小鸟飞过!!!呵呵!!
------其他解决方案--------------------
楼主  你搞定没 求指导