hibernate使用NamingStrategy动态配置表的问题

鱼老壳 2014-04-01 09:18:14
昨天发帖问到了怎么用hibernate动态配置表
今天用了下,可以实现,但问题又来了。。。

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

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

问题是:那个日期必须定下来,这样导致我想查昨天的数据就查不了了。。。 请教各位大虾这怎么解决呢?
...全文
407 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Spring89 2014-04-08
  • 打赏
  • 举报
回复
当传过来的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的表名要在数据库中真实存在的一张表)
鱼老壳 2014-04-06
  • 打赏
  • 举报
回复
引用 4 楼 liutianxiong888 的回复:
每天一张表,你的表名格式不是table_20140405这样吗?你用一个new Date();这返回的表名是什么? 你不用在去调用父类的方法,直接返回className 就可以!
嗯 直接返回className那不就相当于没有配置? 我在想是可以配置 但我以后再代码中怎么访问前一天的数据呢?
Spring89 2014-04-05
  • 打赏
  • 举报
回复
每天一张表,你的表名格式不是table_20140405这样吗?你用一个new Date();这返回的表名是什么? 你不用在去调用父类的方法,直接返回className 就可以!
zfthinker 2014-04-04
  • 打赏
  • 举报
回复
动态添加表? 跟我这个问题能关联下么 http://bbs.csdn.net/topics/390742523?page=1#post-397114808
鱼老壳 2014-04-04
  • 打赏
  • 举报
回复
.....没人?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧