формула гибернации с колонкой - PullRequest
1 голос
/ 30 апреля 2010

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

При сохранении объекта значение столбца будет сохранено как таковое. При чтении столбца примените функцию базы данных к прочитанным данным. @Formula и @Column аннотация не может быть применена к атрибуту в классе сущности. Как мне добиться этой функциональности, не используя один атрибут для сохранения и другой с @Formula для чтения?

1 Ответ

1 голос
/ 30 апреля 2010

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

К сожалению, похоже, что вы используете аннотации Hibernate, и эта функция там пока недоступна. Вам нужно будет использовать сопоставления на основе XML. Вот пример того, как это будет выглядеть с выражением читателя и писателя. (Они оба необязательны.)

    <property name="creditCardNum">
        <column name="credit_card_num" not-null="true"
            write="encrypt(?)" 
            read="decrypt(credit_card_num)"/>
    </property>
...