AIKraft/Skills/kotlin-backend-jpa-entity-mapping

kotlin-backend-jpa-entity-mapping

Корректно моделирует код Kotlin для Spring Data JPA и Hibernate: проектирование сущностей, отношения, планы выборки и уникальность. Помогает при создании сущностей, диагностике N+1, LazyInitializationException и предотвращении Kotlin-специфичных ошибок ORM.

KOKotlin official Разработка ★ 1.1k

Что делает навык

Навык обеспечивает корректное проектирование сущностей JPA в проектах Kotlin + Spring Data JPA, предотвращая ошибки, связанные с использованием data class для сущностей. Он помогает управлять стратегиями идентификации, ограничениями уникальности и жизненным циклом объектов, избегая проблем с семантикой идентичности Hibernate.

Когда применять

  • Создание новых JPA-сущностей в Kotlin-проектах с использованием Spring Data JPA.
  • Диагностика и исправление проблем с идентичностью объектов, вызванных использованием data class.
  • Настройка стратегий идентификации и ограничений уникальности для сущностей.
  • Проверка совместимости классов с проксированием и поддержкой no-arg плагина.

Как работает

  1. Использовать обычные классы (regular class) вместо data class для JPA-сущностей, оставляя data class только для DTO.
  2. Разделять транспортные DTO и сущности хранения данных, если проект не использует общую модель.
  3. Моделировать обязательные столбцы как non-null только тогда, когда это безопасно с точки зрения жизненного цикла объекта и процесса сохранения.
  4. Применять lateinit только при явном согласии проекта с компромиссами и безопасном жизненном цикле.
  5. Проверить наличие плагина kotlin("plugin.jpa") или аналогичной поддержки no-arg при наличии JPA-сущностей.
  6. Убедиться, что классы и их члены совместимы с проксированием там, где это необходимо.

Примеры запросов агенту

Как правильно создать JPA-сущность в Kotlin, чтобы избежать проблем с equals/hashCode?
Проверь мою сущность на соответствие правилам использования regular class вместо data class.
Нужно ли использовать lateinit для обязательного поля в JPA-сущности?

Описание составлено по SKILL.md навыка, сверено 10.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «kotlin-backend-jpa-entity-mapping» из репозитория: # https://github.com/kotlin/kotlin-agent-skills
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r kotlin-backend-jpa-entity-mapping/ ~/.claude/skills/kotlin-backend-jpa-entity-mapping/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.