Hibernate Аннотации: Храните int в столбце varchar - PullRequest
1 голос
/ 24 февраля 2011

Я использую аннотации Hibernate.

В моем POJO у меня есть поле года, которое является целым.

Я хотел бы сохранить это значение в столбце char (4) в моей БД и сделать так, чтобы hibernate конвертировал типы туда и обратно. Есть ли в любом случае, я могу легко это сделать (я начал изучать аннотацию @Type, но не хочу писать свой собственный тип, если это возможно)?

Ответы [ 2 ]

6 голосов
/ 24 февраля 2011

Если поле POJO, отображаемое в столбце char (4) БД, имеет доступ по свойству, то hibernate вызовет его установщик и получатель для сопоставления между базой данных и POJO.Таким образом, логика преобразования может быть реализована внутри установщика и получателя этого свойства.Кроме того, intDate должен быть помечен как @Transient, чтобы hibernate игнорировал отображение этого поля.

public class TableABC {

    private int id;
    private int intDate;

    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Column(length=4) 
    private  String getCharDate() {
        return String.valueOf(this.intDate);
    }

    private void setCharDate(String charDate) {
        try {
            this.intDate = Integer.parseInt(charDate);
        } catch (NumberFormatException e) {
            //Logic to handle when charDate cannot convert to integer 
            this.intDate = 0;
        }
    }

    @Transient
    public int getIntDate() {
        return intDate;
    }

    public void setIntDate(int intDate) {
        this.intDate = intDate;
    }

}
1 голос
/ 24 февраля 2011

Я сделал быстрый поиск по источникам Hibernate, и я не думаю, что есть тип, который вы могли бы использовать для этого:

https://github.com/hibernate/hibernate-core/tree/master/hibernate-core/src/main/java/org/hibernate/type

Но я бы посоветовал вамреализовать свой собственный тип (возможно, тип года?), так как это не так сложно, как может показаться: -)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...