`

hibernate中 查询表名和字段名

阅读更多

/**
 * hibernate 实体、属性查询表名、字段名工具类
 *
 */

package com.cinwa.creditnet.common;

import java.util.Iterator;

import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.Table;

public class HibernateParter {

 private static Configuration hibernateConf;

 private static Configuration getHibernateConf() {
  if (hibernateConf == null) {
   // return new Configuration().configure();
   return new Configuration();
  }
  return hibernateConf;
 }

 private static PersistentClass getPersistentClass(Class clazz) {

  synchronized (HibernateParter.class) {
   PersistentClass pc = getHibernateConf().getClassMapping(
     clazz.getName());

   if (pc == null) {
    hibernateConf = getHibernateConf().addClass(clazz);
    pc = getHibernateConf().getClassMapping(clazz.getName());
   }
   return pc;
  }
 }

 /**
  * 获取实体对应的表名
  * @param clazz 实体类
  * @return 表名
  */
 public static String getTableName(Class clazz) {
  return getPersistentClass(clazz).getTable().getName();
 }

 /**
  * 获取实体对应表的主键字段名称
  * @param clazz 实体类
  * @return 主键字段名称
  */
 public static String getPkColumnName(Class clazz) {
  Table table = getPersistentClass(clazz).getTable();
  return table.getPrimaryKey().getColumn(0).getName();
 }

 /**
  * 通过实体类和属性,获取实体类属性对应的表字段名称
  * @param clazz 实体类
  * @param propertyName 属性名称
  * @return 字段名称
  */
 public static String getColumnName(Class clazz, String propertyName) {
  PersistentClass persistentClass = getPersistentClass(clazz);
  Property property = persistentClass.getProperty(propertyName);
  Iterator it = property.getColumnIterator();
  if (it.hasNext()) {   
   Column column= (Column)it.next();   
   return column.getName();
  }
  return null;
 }
}

分享到:
评论

相关推荐

    获取数据库表名和字段名.rar

    在IT领域,数据库管理是核心任务之一,而获取数据库中的表名和字段名是数据库管理员、开发者以及数据分析师经常需要进行的操作。这个名为"获取数据库表名和字段名.rar"的压缩包文件很可能包含了用于这一目的的代码或...

    Hibernate的查询方式

    注意,在HQL查询语句中,`from`关键字后跟的是持久化类名,而非数据库表名。 2. **动态绑定参数**:为了增加查询的灵活性,Hibernate允许在HQL查询中动态绑定参数。有两种主要的参数绑定形式: - 使用问号(`?`...

    hibernate 查询?Hibernate的HQL查询

    相比于传统SQL,HQL更加简洁且易于理解,它消除了显式的表名和字段名,使代码更具可维护性。 三、创建和使用HQL查询 在实际项目中,我们通常会创建工具类如HibernateUtils,以方便管理和获取SessionFactory和...

    hibernate映射和查询

    在给定的文件中,`Hibernate 第二次课.docx` 可能包含了关于 Hibernate 映射和查询的详细讲解,涵盖了如何配置项目、创建实体类、编写映射文件和执行查询等步骤。`第二章mysql.sql` 文件可能是用于配合 Hibernate ...

    hibernate实体映射文件字段设置默认值

    这里的`<class>`标签表示映射到特定的Java类,其属性`name`指定了对应的Java类全名,而`table`和`schema`分别指定了数据库表名和模式名。 #### 设置默认值的方法 要设置字段的默认值,可以利用`<property>`标签内...

    Hibernate 配置跟数据库字段的对应关系

    在`<hibernate-mapping>`标签下,我们可以为每个实体类创建一个`<class>`标签,其中`name`属性是实体类的全限定名,`table`属性则是对应的数据库表名。 接着,我们来看实体类中的字段与数据库列的映射。Hibernate...

    hibernate的查询学习.

    例如,在用户角色的例子中,用户和角色之间的多对多关系可以通过一个名为`t_user_role`的表来表示,该表包含用户ID(`userid`)和角色ID(`roleid`)两个字段,分别对应用户和角色的主键。配置多对多映射时,`<set>`...

    用Hibernate3.1实现XML和数据库的同步

    前者用于设置数据库连接信息,后者则详细描述了XML文档与数据库表的映射关系,包括实体的表名、字段名、字段类型等细节。 6. **SchemaExport工具**:`org.hibernate.tool.hbm2ddl.SchemaExport`工具可用于根据`.hbm...

    Hibernate错误及解决办法集合

    **可能原因**:该错误表示Hibernate尝试从数据库中查询一个不存在的字段,通常是由于实体类属性名与数据库字段名不一致导致的。 **解决方案**: 1. **检查实体类属性名**:确认实体类中的属性名与数据库表中的字段...

    hibernate实现动态表查询的多种解决方案

    自定义命名策略是一种非常灵活的方法,可以通过这种方式来动态地更改表名或字段名。 ```java public class CustomNamingStrategy implements NamingStrategy { @Override public String getTableName(Class clazz...

    电子书-Hibernate 3.12

    XML配置文件通常包含实体类的信息,包括表名、字段名以及它们对应的数据库类型。而注解方式则允许直接在类和属性上添加元数据,使代码更加整洁。 此外,Hibernate支持多种查询方式。HQL(Hibernate Query Language...

    hibernate所有开发包

    2. Table/Column:使用@Table和@Column注解来指定表名和字段名,其他如@Temporal、@Lob等注解用于特殊类型的映射。 3. Inheritance:Hibernate支持多种继承映射策略,如单表继承、联合继承和表-per-hierarchy。 四...

    Hibernate进行数据查询

    这里的`User`类是映射到数据库中的USER表,Hibernate会自动根据包名和类名匹配表名。 2. **HQL查询语言** HQL是一种面向对象的查询语言,类似于SQL但具有对象关系映射的特点。它可以处理对象的继承、多态等特性。...

    Hibernate HQL查询.docx

    HQL 的基本结构类似于 SQL 的 `SELECT FROM` 结构,不同之处在于 HQL 中使用的是类名和属性名而非表名和字段名。 ##### 示例:基本查询 ```java String hql = "FROM User"; Query query = session.createQuery(hql)...

    Hibernate常用包及XML

    例如,指定表名、字段名、类型、长度等。 总结来说,了解Hibernate的常用包和对应的XML配置是掌握Hibernate的关键。通过这些组件,你可以构建出一个完整的ORM解决方案,使得Java对象和数据库之间进行无缝的数据交换...

    hibernateHQL基本查询

    - **语法差异**:虽然 HQL 的语法与 SQL 类似,但其关键字不区分大小写,更注重对象的引用而非具体的表名或字段名。 - **自动封装**:使用 HQL 查询时,结果会自动封装成对应的 Java 对象,减少了程序员手动处理结果...

    hibernate中文官方文档3.6

    - **实现NamingStrategy**:定义命名策略以定制Hibernate生成的SQL语句中的表名和字段名。 - **XML配置文件**:解释如何使用XML文件来配置Hibernate。 - **J2EE应用程序服务器的集成**:介绍Hibernate与J2EE应用程序...

    生成hibernate实体类

    映射文件包含表名、字段名及其类型等信息。 4. **执行生成命令**:使用`hibernatetool`或IDE插件,指定配置文件、数据库连接信息以及映射文件,然后运行生成命令。例如,如果你使用命令行工具,可能会有如下命令: ...

    Hibernate Tool 使用文档

    - **Default reverse engineering strategy**:介绍了默认的反向工程策略,包括如何定制反向工程行为,如表名、字段名的转换规则等。 通过以上知识点的梳理,我们可以清晰地了解到Hibernate Tools的功能和使用方法...

Global site tag (gtag.js) - Google Analytics