Kotlin, JPA и @Transient

У меня есть класс Entity, который я перенес из Java в Kotlin. Одно из свойств ( inetAddress ) аннотируется с @Transient чтобы предотвратить его сохранение в реляционной базе данных. Однако JPA (реализация Hibernate) не видит эту аннотацию и помещает ее в базу данных как свое собственное поле. Все это работает правильно, когда класс написан на Java.

Кто-нибудь знает, как правильно аннотировать этот класс Kotlin, чтобы JPA / Hibernate увидели аннотацию @Transient и не inetAddress свойство inetAddress в базу данных?

 package infr.audio.model import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.annotation.JsonProperty import infr.audio.messages.InetAddressWrapper import java.io.Serializable import java.net.InetAddress import javax.persistence.Column import javax.persistence.Entity import javax.persistence.GeneratedValue import javax.persistence.Id import javax.persistence.NamedQueries import javax.persistence.NamedQuery import javax.persistence.Table @Entity @Table(name = "DIS_JOCKEY") @NamedQueries(NamedQuery(name = "DisJockeyInfo.find", query = "SELECT m FROM DisJockeyInfo m"), NamedQuery(name = "DisJockeyInfo.findByReservationId", query = "SELECT m FROM DisJockeyInfo m WHERE m.reservationId = :reservationId"), NamedQuery(name = "DisJockeyInfo.findByReservationIdAndName", query = "SELECT m FROM DisJockeyInfo m WHERE m.reservationId = :reservationId AND m.name = :name"), NamedQuery(name = "DisJockeyInfo.findMaxDisEntityIdByReservationId", query = "SELECT MAX(m.disEntityId) FROM DisJockeyInfo m WHERE m.reservationId = :reservationId"), NamedQuery(name = "DisJockeyInfo.findActive", query = "SELECT m FROM DisJockeyInfo m WHERE m.disEntityId IS NOT NULL"), NamedQuery(name = "DisJockeyInfo.findActiveByInetAddress", query = "SELECT m FROM DisJockeyInfo m WHERE m.inetAddress = :inetAddress AND m.disEntityId IS NOT NULL"), NamedQuery(name = "DisJockeyInfo.findActiveByReservationId", query = "SELECT m FROM DisJockeyInfo m WHERE m.reservationId = :reservationId AND m.disEntityId IS NOT NULL"), NamedQuery(name = "DisJockeyInfo.deleteInactive", query = "DELETE FROM DisJockeyInfo m WHERE m.id = :id AND m.disEntityId IS NULL")) data class DisJockeyInfo( @get:Id @get:GeneratedValue(strategy = GenerationType.IDENTITY) @get:Column(name = "ID") var id: Long, @get:Column(name = "RESERVATION_ID") var reservationId: String?, @get:Column(name = "NAME") var name: String?, @get:Column(name = "DIS_ENTITY_ID") var disEntityId: Long?, @get:java.beans.Transient @get:JsonIgnore @field:Transient var inetAddress: InetAddress? ) : GenericEntity, Serializable { var inetAddressString: String? @Column(name = "INET_ADDRESS") @JsonProperty("inetAddress") get() = if (inetAddress != null) InetAddressWrapper(inetAddress).encodedInetAddress else null set(inetAddressString) { inetAddress = if (inetAddressString != null) InetAddressWrapper(inetAddressString).inetAddress else null } constructor() : this(id = 0L, reservationId = null, name = null, disEntityId = null, inetAddress = null) {} companion object { /** Serial version */ private val serialVersionUID = 2027355982760360935L } } 

    Вы аннотируете поле вместо аннотации геттера. Обратите внимание, что ваша аннотация геттера использует неправильный тип ( java.beans.Transient ) вместо правильного javax.persistence.Transient .

    Intereting Posts
    Преобразование объекта с полями с нулевым значением в объект с полями, не допускающими нулевое значение, или null Ошибка при загрузке приложения IBM Bluemix Cloud Foundry SpringBoot Android Kotlin: Смысл бесплатной функции с использованием Mockito / PowerMock Аннотации времени выполнения, аннотированные по поданной в классе kotlin, генерируются неправильно Простой и приятный способ увеличить значение null в Kotlin Ошибка компиляции команды с закрытыми классами Как получить содержимое веб-страницы на Kotlin Kotlin, как получить searchView submit Как получить значение перечисления типа raw из класса enum и строки в kotlin Соответствие нестандартных типов в ElementUnion Котлин, уменьшить дублированный код String.intern () возвращает разные значения в драйвере JDBC Настройка Kotlin при выражении doAsync Котлин-андроид не работает Как написать пользовательский getter, если свойства класса определены в конструкторе?