Как мне вставить в мою таблицу составной ключ с JPA? - PullRequest
0 голосов
/ 10 января 2020

Я новичок в JPA-Hibernate, и я хотел знать, как мне обновить таблицу соединений, объявленную в моей базе данных PostgreSQL.

В моих таблицах есть просмотр:

Таблица укрытий

enter image description here

Таблица изображений

enter image description here

Таблица SheltersXImages

enter image description here

Я хотел бы обновить свою таблицу SheltersXImages, которые имеют уникальный составной ключ, состоящий из 2 внешних ключей: «str_id» из таблицы «Укрытия» и «img_id» из таблицы изображений.

Должен ли я:

  • Создать объект для представления SheltersXImages Сформировать таблицу и создать репозиторий для вставки в таблицу SheltersXImages вручную?
  • Найти более подходящую идею? Я нашел некоторые предметы, касающиеся аннотаций @IdClass @EmbeddedId или @JoinTable, но, как я уже сказал, я новичок, и я не совсем понимаю, могу ли я использовать их для решения своей проблемы и какое решение является наиболее подходящим.

В данный момент на моих объектах просматриваются:

Объект "Укрытие"

open class SheltersStrEntity {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "shelters_generator")
@SequenceGenerator(name="shelters_generator", sequenceName = "v1.shelters_str_str_id_seq", initialValue = 1, allocationSize = 1)
@Column(name = "str_id", nullable = false, insertable = false, updatable = false)
open var strId: Long? = null
@Basic
@Column(name = "str_siren", nullable = false)
open var strSiren: String? = null
@Basic
@Column(name = "str_nic", nullable = false)
open var strNic: String? = null
@Basic
@Column(name = "str_name", nullable = false)
open var strName: String? = null
@Basic
@Column(name = "str_email", nullable = false)
open var strEmail: String? = null
@Basic
@Column(name = "str_address", nullable = false)
open var strAddress: String? = null
@Basic
@Column(name = "str_zip_code", nullable = false)
open var strZipCode: String? = null
@Basic
@Column(name = "str_city", nullable = false)
open var strCity: String? = null
@Basic
@Column(name = "str_phone", nullable = false)
open var strPhone: String? = null
@Basic
@Column(name = "str_active", nullable = false)
open var strActive: Boolean? = null
@Basic
@Column(name = "str_creation_datetime", nullable = false)
open var strCreationDatetime: OffsetDateTime? = null
@Basic
@Column(name = "str_edit_datetime", nullable = false)
open var strEditDatetime: OffsetDateTime? = null

//Equals and hashcode ...
}

Объект "Изображение"

@Entity
@Table(name = "images_img", schema = "v1", catalog = "hachiko")
open class ImagesImgEntity {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "images_generator")
@SequenceGenerator(name="images_generator", sequenceName = "v1.images_img_img_id_seq", initialValue = 1, allocationSize = 1)
@Column(name = "img_id", nullable = false, insertable = false, updatable = false)
open var imgId: Long? = null
@Basic
@Column(name = "img_name", nullable = false)
open var imgName: String? = null
@Basic
@Column(name = "img_content", nullable = false)
open var imgContent: ByteArray? = null

//Equals and hashcode ...
}

Заранее спасибо, ребята

...