Zum Inhalt springen
Anjunar/ DOCS

Entity-Mapping

Übersetzte Felder und konvertierte Werte deklarieren und ihre gewöhnlichen Domänentypen erhalten.

Mapping

Die besitzende Entity annotieren

@Localized legt die Fallback-Regel fest; @Translation markiert jede Property, deren Wert zu einer Sprachzeile gehört. Die Haupttabelle hat keine Spalte für diesen übersetzten Wert.

Ein übersetzter String

Verwende eine UUID-ID und einheitlichen Feldzugriff. Eine benannte Übersetzungsspalte verwendet @Translation(column = ...).

scala
import com.anjunar.hibernatei18n.annotation.{Localized, Translation} import com.anjunar.hibernateddl.hibernate.annotation.SchemaId import jakarta.persistence.{Entity, Id, Table} import java.util.UUID import scala.compiletime.uninitialized @Entity @Table(name = "page") @SchemaId("7f3a9c21") @Localized(defaultLocale = "en", fallbackLocale = "en") class Page: @Id @SchemaId("0a1b2c3d") var id: UUID = uninitialized @Translation @SchemaId("f34e45b6") var title: String = uninitialized
scala
@Translation(column = "display_title") var title: String = uninitialized
Feld- oder Getter-Zugriff

JavaBean-Getter werden ebenfalls unterstützt. ID und übersetzte Member müssen denselben Zugriffspfad verwenden; gemischter Zugriff und @Column direkt an @Translation scheitern beim Bootstrap.

Konvertierung

Einen typisierten Wert behalten

Eine konvertierte übersetzte Property muss eine String-Datenbankdarstellung verwenden. Encoder und Decoder des TranslationField müssen zum JPA-Converter passen.

Ein konvertiertes Markdown-Feld

Ergänze diesen Member in Page mit deinem Markdown-Typ und Converter und installiere danach beide Felder gemeinsam.

scala
@Translation @SchemaId("cdef1234") @jakarta.persistence.Convert(converter = classOf[MarkdownConverter]) var content: Markdown = uninitialized val titleField = TranslationField.string[Page]("title", _.title) val contentField = TranslationField.converted[Page, Markdown]( "content", _.content, _.source, Markdown.apply) val translations = HibernateI18n.install( factory, classOf[Page], _.id, Seq(titleField, contentField))