Почему Hibernates игнорирует атрибут name аннотации @Column? - PullRequest
1 голос
/ 22 апреля 2010

При использовании Hibernate 3.3.1 и Hibernate Annotations 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;

 ....

}

По причинамЯ не могу понять, Hibernate игнорирует указанное имя столбца и использует «ihinv» для генерации SQL:

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

Что, конечно, дает мне следующую ошибку:

Column IHINV not in table CIINVHD

Редактировать: Я переключил уровень журнала режима гибернации на DEBUG и вижу, что он не обрабатывает аннотации столбцов для этого поля.Пробовал несколько случайных вещей, это просто не работает.

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

Ответы [ 2 ]

2 голосов
/ 22 апреля 2010

Вы можете попробовать что-то вроде цитаты:

Например:

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

или

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

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

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

0 голосов
/ 22 апреля 2010

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

...