2016-05-27 7 views
0

Я хочу сохранить свою таблицу в двух различных базах данных (например: HyperSQL и MYSQL), но я не могут дублировать таблицы аннотации вроде этого:JPA: Одна таблицы с двумя различными базами данных

@Entity(name="users") 
@Table(name = "users", schema = "[email protected]_pu") 
@Table(name = "users", schema = "[email protected]_pu") 
public class UserEntitie implements Serializable {} 

Have любая идея, как я могу это сделать без дублирования моего компонента bean

ответ

3

Вот почему некоторые люди рекомендовали не помещать информацию схемы в аннотации. Используйте orm.xml, чтобы указать информацию о схеме (имя схемы, имя таблицы, имя столбца и т. Д.) И иметь один orm.xml в каждом хранилище данных, к которому развертывается система. Очевидно, что это означает один EntityManagerFactory для каждого хранилища данных; вы не можете использовать один класс в нескольких хранилищах данных с тем же EntityManagerFactory

Используя аннотации, вы можете только что-то указать один раз и придется вручную редактировать java-файлы для повторного развертывания.

+0

Возможно, это невозможно использовать orm.xml, потому что я работаю с kundera как с каркасом, а не спящим, посмотрите: https://github.com/impetus-opensource/Kundera/issues/276 –

+1

Если ваша JPA провайдер утверждает, что он совместим с JPA (что они делают), тогда он должен поддерживать orm.xml. Поскольку ваш провайдер, по-видимому, не поддерживает orm.xml (базовые возможности), тогда он должен удалить все утверждения о совместимости JPA (так что это не пугает время пользователя). Возможно, скажите им это. JPA имеет orm.xml с JPA 1 !! –

+0

@BillyFrost, почему бы вам не рассказать нам. Я - разработчик Kundera. где вы читали ** совместимые средства «поддерживали все функции» **? Kundera экономит время пользователей. Проверьте, что это [домашняя страница] (https://github.com/impetus-opensource/Kundera), я думаю, вы можете четко видеть число звездных наблюдателей, наблюдателей и т. Д. –