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

解决方案 »

  1.   

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

  2.   

    都得到了,还要hbm.xml干啥,本来hiber就是不让你关心数据库方便的地东西,专心搞对象(谈恋爱)
      

  3.   

    应该可能在*.hbm.xml里,获得吧,如果你想得到可能要用DOM4J来获得
      

  4.   

    保留原来的AnnotationConfiguration cfg对象调用cfg.getClassMappings(),循环这个IteratorRootClass clz = (RootClass) it.next();
    clz.getTable().getName()这个就是表名了。
      

  5.   

    首先谢谢楼上的三位朋友。
    可你们都看错题目了。我现在是用annotation的方式映射的,不是xml的方式。
      

  6.   

    字段名就是clz.getTable().getColumnIterator()Column col = colIt.next();这样就可以
      

  7.   

    User.class.getAnnotations()
    这个方法可以把类里面的注解都拿出来
    LZ你可以拿出来以后看看有没有你感兴趣的信息吧
      

  8.   


    这位朋友,不知道重新new一个AnnotationConfiguration行不行?
    cfg.getClassMappings()得到的是空。我很郁闷。如果是xml方式则可以。
      

  9.   

    hibernate有自带的数据库映射文件
      

  10.   

    我是用Annotation的方式映射的,没有配置文件
      

  11.   

    用@Table(name="表名")试试
       不知道说的合不合楼主意,小鸟飞过!!!呵呵!!
      

  12.   

    重新new一个AnnotationConfiguration当然是不可行,因为只在原来的cfg中才会有记录哪些类已经映射上去了。如果你重新new了一个AnnotationConfiguration,也可以调用方法cfg.addAnnotatedClass(clz),这样再getClassMappings就可以了