Hibernate中调用带有underscore的Column Name

Hibernate中默认的NamingStrategy不支持调用带有下划线的column name。在hibernate的bean中必须使用camel case。使用ImprovedNamingStrategy可以使hibernate成功map到带有下划线的column name。代码如下:

1. Config文件

1
2
3
4
5
6
7
8
9
10
11
12
13
public static SessionFactory getSessionFactory() {
    if (sessionFactory == null) {
      Configuration configuration = new Configuration().configure();
      System.setProperty("hibernate.connection.password", DEFAULT_PASSWORD);
      System.setProperty("hibernate.connection.username", DEFAULT_USER);
      System.setProperty("hibernate.connection.driver_class", DEFAULT_DRIVER_CLASS);
      System.setProperty("hibernate.connection.url", DEFAULT_URI);
      System.setProperty("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy");
      configuration.setProperties(System.getProperties());
      sessionFactory = configuration.buildSessionFactory();
    }
    return sessionFactory;
}

2. Bean

1
2
3
4
5
6
7
8
9
10
11
12
13
@Entity
@Table(name = "version")
public class Version {
  private int versionId;
  @Id
  @Column(name="version_id")
  public int getVersionId() {
    return versionId;
  }
  public void setVersionId(int versionId) {
    this.versionId = versionId;
  }<br>
}

3. Unit Test

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void testVersionBean() {
     Session session = Config.getSessionFactory().openSession();
     session.beginTransaction();
     
     Query query = session.createQuery("select versionId from Version");
     
     @SuppressWarnings("unchecked")
     List<Object> version = query.list();
     assertEquals(version.get(0), 1);
      
     session.getTransaction().commit();
     session.close();
}

  

posted @   小张的练习室  阅读(242)  评论(0编辑  收藏  举报
编辑推荐:
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
阅读排行:
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 当职场成战场:降职、阴谋与一场硬碰硬的抗争
· 用99元买的服务器搭一套CI/CD系统
· Excel百万数据如何快速导入?
· ShadowSql之.net sql拼写神器
点击右上角即可分享
微信分享提示