0

我正在使用 Hibernate 将对象映射到旧模式,该模式通过注释包含一些巨大的表(因为 XML 文件是 2003 年的)。由于这些类是如此之大,是的,我偶尔会打错字,直到我尝试运行它,Hibernate 才懒得告诉我。

这是我尝试过的:

一:设置 hbm2ddl.auto 为“验证”:

这会导致类的 String 值针对 进行验证varchar(255)。由于数据库中的许多列类型都是CHAR(n),所以这很糟糕。我将不得不添加columnDefinition="CHAR(n)"数百个映射。

二:使用Unitils。

通过 Maven 导入这些会导致依赖库的导入,这会破坏其他代码部分。示例:我使用的是 Hibernate 4.1,但 Unitils 导入了 Hibernate 3.2.5 并炸毁了一个 UserType。

那么,还有其他方法可以做到这一点吗?我查看了 Unitils 代码,看看我是否可以简单地拉出我需要的部分(当我只需要一个方法时,我经常使用 apache-commons 这样做),但这不是一项简单的任务。

Hibernate 是通过 Spring 应用程序上下文配置的。

有什么想法吗?

4

1 回答 1

1

我会使用 Spring 测试框架针对内存数据库(HSQLDB、H2)编写测试。当您尝试对表运行查询时,您会很快看到任何映射错误。

测试类看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MyTestConfig.class)
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=true)
public class MyTest {

    @Autowired
    private SessionFactory sessionFactory;

    // class body...
}

我会将 Hibernate 配置为自动部署表作为测试的一部分。

于 2012-06-15T12:49:56.397 回答