2015-03-30 3 views
0

У меня есть объект, отображенный на вид SQL, какВозможно ли изменить отображение для @Column() во время выполнения?

@Entity 
@Immutable 
@Table(name = "SOME_VIEW") 
public class MyClass implements Serializable { 

@Id 
@Column(name = "SOME_COL", insertable = false, updatable = false) 
private Integer id; 
... 
} 

Сегодня мне сказали, что на один из серверов, столбец SOME_COL в SOME_VIEW будут заполнены нулями, и я должен использовать SOME_OTHER_COL в качестве идентификатора, в зависимости от значения в файле config.properties. С @Column имеет @Retention(RUNTIME), возможно ли, что я смогу изменить отображение на @Column(name = "SOME_OTHER_COL"), прежде чем приложение начнется на tomcat?

ответ

0

Нет, вы не можете «обмануть» спящий режим с заменой, даже с помощью javassist или asm (без тяжелой головной боли и с ними тоже). Я вижу несколько способов решить вашу проблему:

  1. Постарайтесь понять, почему в столбце первичного ключа есть значения NULL и исправить их.
  2. Разделите код на две ветви и создайте пакеты, указанные для каждого сервера.
  3. Найти натуральный ключ и использовать EmbeddedId.
Смежные вопросы