Понимание аннотации hibernate @Type

Из официальная документация спящего режима:

@org.hibernate.annotations.Type переопределяет тип спящего режима по умолчанию используется: это, как правило, не требуется, поскольку тип правильно выведенное Hibernate

В документации есть пример:

@Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType")
@Columns(columns = {
    @Column(name="r_amount"),
    @Column(name="r_currency")
})
public MonetaryAmount getAmount() {
    return amount;
}

Я этого не понимаю. Мы объявляем @Type(type="org.hibernate.test.annotations.entity.MonetaryAmountUserType"), но возвращаемое значение метода имеет тип MonetaryAmount.

Я ожидал, что тип, объявленный в аннотации типа и тип возвращаемого значения, должен быть того же типа.

Не могли бы кто-нибудь объяснить фактические цели типа, объявленные в аннотации @Type. Почему он отличается от возвращаемого типа?

Ответ 1

Существует разница между типом возвращаемого значения и типом @Type.

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

Давайте возьмем простой пример:

@Type(type="yes_no")
private boolean isActive; 

Здесь тип возвращаемого значения - boolean но значение, которое хранится в базе данных, будет в формате Y или N вместо true/false.

Таким же образом вы можете отобразить ваш объект в столбце базы данных. Проверьте здесь для более подробного объяснения.