JPA - изменить таблицу во время выполнения - PullRequest
1 голос
/ 06 августа 2010

Таблицы sales_2009 sales_2008 sales_2007

И только один класс (продажи), Как изменить таблицу во время выполнения?

Ответы [ 2 ]

2 голосов
/ 06 августа 2010

Как изменить таблицу во время выполнения?

Это не поддерживается стандартным JPA.Но реализация может предоставить расширения для Горизонтальное разбиение :

Я ничего не могу сказать о зрелости Slice.

Anальтернативным решением было бы определить три различных постоянных модуля и отобразить сущность Sales конкретно в каждом из них (возможно, используя сопоставления XML для повторного использования кода Java).А затем получите «правильное» EntityManager из соответствующего EntityManagerFactory.Это решение не является идеальным с точки зрения памяти (плюс некоторые другие ограничения).

См. Также

0 голосов
/ 09 августа 2010

Спасибо за ответ, я решил с iBATIS

В карте файлов (xml)
select * from $table$ where date = #date# and product_id = #product_id#

* В файле Java - пример с сервлетом: -

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 не работает.

...