Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

269
Visualizações
¿El parámetro "opcional" de @ManyToOne se configura automáticamente usando la nulabilidad de Kotlin?

Leí que especificar optional = false en la anotación de asociación @ManyToOne podría ayudar a Spring a mejorar el rendimiento de las consultas.

En una entidad de clase de datos de Kotlin, ¿realmente necesito especificar el parámetro en la anotación, o Spring puede resolver esto por sí mismo usando la nulabilidad del campo del item ?

Por ejemplo, si tengo la siguiente declaración:

 @Entity @Table(name = ACCESS_LOGS_ARCHIVES_TABLE, indexes = [ Index(name = "access_logs_archives_item_idx", columnList = "access_item_id") ]) data class AccessLogArchive( val date: LocalDate, @ManyToOne(optional = false) @JoinColumn(name = "access_item_id", nullable = false) val item: AccessLogItem, val occurrences: Int ) { @Id @GeneratedValue var id: Long? = null } @Entity @Table(name = ACCESS_ITEMS_TABLE) data class AccessLogItem( @Column(length = 3) val code: String, @Column(columnDefinition = "text") val path: String, @Column(length = 10) val verb: String ) { @Id @GeneratedValue var id: Long? = null }

En este caso, por ejemplo, esperaría que Spring supiera que el campo del item no admite valores NULL y, por lo tanto, la relación debe entenderse como optional=false , incluso sin especificarlo como lo hice yo. ¿Es este el caso?

La misma pregunta se aplica a @JoinColumn 's nullable nullable = false , por cierto.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Considere una entidad simple como Room que tiene una relación @ManyToOne con House .

 @Entity class Room( @ManyToOne(optional = true) val house: House ) { @Id @GeneratedValue(strategy = GenerationType.AUTO) val id: Long = 0 }

JPA creará una mesa de sala con una columna.

 `house_id` bigint(20) DEFAULT NULL

Si especifica @ManyToOne(optional = false)

la columna se verá así:

 `house_id` bigint(20) NOT NULL

Al especificar opcional, le dice a JPA cómo se debe generar el esquema, si la columna puede ser NULL o no.

En el tiempo de ejecución, intentar cargar una Room sin una House provocará una excepción si la propiedad de la casa no admite valores NULL (¿ House en lugar de House? ), incluso cuando el valor de optional es true .

Lo mismo se aplica a @JoinColumn .

¿El parámetro "opcional" de @ManyToOne se configura automáticamente usando la nulabilidad de Kotlin?

No, no es. Es independiente de eso y por defecto se establece en true .

Conclusión: para que su esquema refleje sus entidades, es una buena idea usar optional = true si la propiedad de la casa sería anulable y optional = false si la propiedad de la casa no fuera anulable.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda