JPA - 在运行时更改表

时间:2010-08-06 02:46:56

标签: java orm jpa openjpa

表     sales_2009     sales_2008     sales_2007

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

2 个答案:

答案 0 :(得分:2)

  

如何在运行时更改表格?

标准JPA不支持开箱即用。但实施可能会为Horizontal partitioning提供扩展程序:

我对Slice的成熟度一无所知。

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

另见

答案 1 :(得分: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无效。