То, почему В спящем режиме, игнорирует атрибут имени @Column аннотации?

Используя В спящем режиме 3.3.1 и В спящем режиме Аннотации 3.4, база данных является DB2/400 V6R1, выполняя это на WebSphere 7.0.0.9

У меня есть следующий класс

@Entity
public class Ciinvhd implements Serializable {


    @Id
    private String ihinse;

    @Id
    @Column(name="IHINV#")
    private BigDecimal ihinv;

 ....

}

По причинам я не могу фигурировать, Быть в спящем режиме, игнорирует указанное имя столбца и использует 'ihinv' для генерации SQL:

select
        ciinvhd0_.ihinse as ihinse13_,
        ciinvhd0_.ihinv as ihinv13_,
...

Который, конечно, дает мне следующую ошибку:

Column IHINV not in table CIINVHD

Править: Я переключился, уровень журнала в спящем режиме для ОТЛАДКИ, и я вижу, что он не обрабатывает аннотацию столбца для того поля. Попробованный несколько случайных вещей это просто не работает.

Кто-либо имел эту проблему прежде? У меня есть другие объекты, которые очень подобны в способе, которым они используют # в своих именах полей базы данных и который является частью PK, и у меня нет этой проблемы с ними.

1
задан svachon 23 April 2010 в 12:42
поделиться

2 ответа

Вы можете попробовать какой-нибудь тип цитирования:

Например:

@Column(name="`IHINV#`")

или

@Column(name="'IHINV#'")

Другой вариант - это копаться в исходном коде Диалект гибернации для DB2 и посмотреть, содержит ли он что-нибудь полезный.

Конечно, проще всего было бы удалить хэш из имени столбца, если это возможно.

2
ответ дан 3 September 2019 в 01:06
поделиться

Я подозреваю, что проблема заключается в хеш-коде в имени столбца. Подобный вопрос на форумах спящего режима предполагает, что здесь могут быть полезны обратные кавычки.

0
ответ дан 3 September 2019 в 01:06
поделиться
Другие вопросы по тегам:

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