之前碰见一个项目部署在武汉,又部署在南京。由于是配合别人做的,数据库的搭建由别人完成,我们只是负责数据库中的几个表的数据处理。以前的数据库名称是projectwh,部署南京时,开始也是使用的projectwh的名称,后来对方重新创建了一个数据库projectnj(projectwh没有删除),我们对应的将Hibernate配置文件中的url中的数据库名称修改了成projectnj,但是发现存取操作的目标仍然会是projectwh中的表格。
一般想来Hibernate配置文件中应该只有url跟数据库名称相关啊?怎么会出现这种问题。最后全局搜索projectnj才发现,原来对应表格的Hibernate映射文件中也有指明该表格属于哪一个数据库,也就是说Hibernate并没有根据url中的数据库名称来来确定具体使用哪一个数据库,当两个数据库非常类似(用户名和密码一样)时,如果映射文件中的数据库名称写错误了,就会出现程序将按照映射文件中的对应的数据库表格中写入数据。由于映射文件一般都是自动生成的,所以很少注意这个问题。
总结,当发现程序操作的表格跟预期的数据库中的表格不一致时,不仅要检查url配置,还要检查对应表格的映射文件。
时间: 2024-10-08 19:53:52