В @Table (имя = “имя таблицы”) - делают “имя таблицы” переменной в JPA

Я использую JPA, и я должен сделать "имя таблицы" переменной.

В базе данных у меня есть много таблиц, и мой код должен получить доступ к таблице, где я указываю его для чтения.

@Entity
@Table(name = "tableName")
public class Database implements Serializable {...............}

Какие-либо идеи?

15
задан zengr 15 March 2010 в 03:53
поделиться

2 ответа

Вы можете сделать что-то вроде этого, если это вас беспокоит, я думаю. Никогда не пробовал, просто безумное предположение . Но это обычная практика - я следую именованным запросам; да, это совсем другое дело.

@Entity
@Table(name = Database.tableName)
public class Database implements Serializable {
    public static final String tableName = "TABLE_1";
    ...............
}

Но я не понимаю, зачем кому-то это делать. Не могли бы вы рассказать нам, чем вы занимаетесь? Почему у вас есть несколько таблиц с точно таким же определением?

[Отредактировано]

Я попробовал ваше решение. Это не помогло , в нем говорится: значение атрибута аннотации Table.name должно быть постоянным выражением.

Так разве это недостаточно ясно? Я имею в виду, что ты не можешь этого сделать. И считаю это вполне логичным.Если вы хотите, чтобы Hibernate генерировал вашу схему, вы можете определить все нужные вам сущности в схеме и с соответствующими отношениями.

6
ответ дан 1 December 2019 в 04:53
поделиться

Указать имя таблицы во время выполнения невозможно, JPA просто не работает (и я все еще не уверен, что получу ваше требование). Либо сопоставьте различные объекты в вашем наборе таблиц и выполните различные запросы, либо создайте их динамически (возможно, с использованием Criteria API) в зависимости от ввода со стороны клиента или используйте что-то еще, кроме JPA (например, iBATIS).

2
ответ дан 1 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: