Понимание аннотации 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
.
Таким же образом вы можете отобразить ваш объект в столбце базы данных. Проверьте здесь для более подробного объяснения.