日期:2014-05-18  浏览次数:20781 次

hibernate使用NamingStrategy动态配置表的问题
昨天发帖问到了怎么用hibernate动态配置表 
今天用了下,可以实现,但问题又来了。。。

我的使用情况:由于数据量大   每天会创建一个表保存数据,所以我用的代码如下:
public class MyNameStrategy extends DefaultNamingStrategy{

@Override
public String classToTableName(String className) {
if(className.equals("Comment")) {
className = className+new Date();
}
return super.classToTableName(className);
}
}

问题是:那个日期必须定下来,这样导致我想查昨天的数据就查不了了。。。  请教各位大虾这怎么解决呢?

------解决方案--------------------
当传过来的className为Comment时,你已经把表名赋给它了啊!这是我以前写的:
DateFormat format = new SimpleDateFormat("yyyyMM");
String currentDate = format.format(new Date());
if("AccessLog".equals(className)){
return "joye_access_" + currentDate;
}
 
当传过来的参数为AccessLog时,返回表名为joye_access_201404这张表,以后对AccessLog这个类的操作都是基于joye_access_201404这个表(前提是当前是2014年4月),你要想查询前一天的数据,那么你获取到前一天日期就可以了啊!
总之,你return时写上表名前缀,加上动态时间部分,组成一个完整的表中(这里return的表名要在数据库中真实存在的一张表)