1

表sales_2009 sales_2008 sales_2007

而且只有一个类(销售),如何在运行时更改表?

4

2 回答 2

2

如何在运行时更改表?

标准 JPA 不支持开箱即用。但是实现可能会为水平分区提供扩展:

关于 Slice 的成熟度,我无话可说。

另一种解决方案是定义三个不同的持久性单元并Sales在每个单元中专门映射实体(可能使用 XML 映射来重用 Java 代码)。然后,EntityManager从适当的EntityManagerFactory. 但是,从内存的角度来看,这种解决方案并不理想(加上一些其他限制)。

也可以看看

于 2010-08-06T14:32:08.417 回答
0

谢谢回复,我解决了iBATIS

在文件映射 (xml)
select * from $table$ where date = #date# and product_id = #product_id#

*在文件 Java 中 - 使用 Servlet 的示例:-

Map parameter = new HashMap(); 
parameter.put("table", "sales2009");
parameter.put("date", "2009-10-08"); //MySQL date :) 
parameter.put("product_id",17);

SqlMapClient sqlMap = (SqlMapClient) getServletContext().getAttribute("sqlMap");

List result = sqlMap.queryForList("selectSalesByParameters",parameter); 
for(Sales s : result) { }

重要提示: $table$ != #table不工作。

于 2010-08-09T14:39:09.550 回答