Hibernate Search 需要 javax.persistence.EntityManager

huangapple go评论96阅读模式
英文:

Hibernate Search is required javax.persistence.EntityManager

问题

I'm trying make test application using Hibernate Search. I have note repository which extend SimpleJpaRepository with required parameter jakarta.persistence.EntityManager. But when i try to create search session Search.session(entityManager) I get an error that the Search.session() need javax.persistence.EntityManager. So question is how can i create Search session using jakarta.persistence.EntityManager?

NoteRepository:

  1. @Repository
  2. @Transactional
  3. class NoteRepositoryImpl(
  4. private val entityManager: EntityManager,
  5. ) : SimpleJpaRepository<NoteEntity, Long>(NoteEntity::class.java, entityManager), NoteRepository {
  6. override fun search(query: String): List<NoteEntity> {
  7. val session = Search.session(entityManager)
  8. val result = session.search(NoteEntity::class.java)
  9. .where { it.match().fields("title", "tag", "content").matching(query) }
  10. .fetch(0, 100)
  11. return result.hits().map { it as NoteEntity }
  12. }
  13. }

Gradle file:

  1. plugins {
  2. id 'org.springframework.boot' version '3.0.4'
  3. id 'io.spring.dependency-management' version '1.1.0'
  4. id 'org.jetbrains.kotlin.jvm' version '1.7.22'
  5. id 'org.jetbrains.kotlin.plugin.spring' version '1.7.22'
  6. id "org.jetbrains.kotlin.plugin.jpa" version "1.7.22"
  7. id 'org.jetbrains.kotlin.plugin.allopen' version '1.7.22'
  8. }
  9. allOpen {
  10. annotation("jakarta.persistence.Entity")
  11. annotation("jakarta.persistence.Embeddable")
  12. annotation("jakarta.persistence.MappedSuperclass")
  13. }
  14. configurations {
  15. compileOnly {
  16. extendsFrom annotationProcessor
  17. }
  18. }
  19. repositories {
  20. mavenCentral()
  21. }
  22. dependencies {
  23. implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  24. implementation 'org.springframework.boot:spring-boot-starter-web'
  25. implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
  26. implementation 'org.jetbrains.kotlin:kotlin-reflect'
  27. developmentOnly 'org.springframework.boot:spring-boot-devtools'
  28. implementation 'org.hibernate.search:hibernate-search-mapper-orm:6.1.8.Final'
  29. implementation 'org.hibernate.search:hibernate-search-backend-lucene:6.1.8.Final'
  30. runtimeOnly 'org.postgresql:postgresql'
  31. annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
  32. testImplementation 'org.springframework.boot:spring-boot-starter-test'
  33. }
  34. tasks.withType(KotlinCompile) {
  35. kotlinOptions {
  36. freeCompilerArgs = ['-Xjsr305=strict']
  37. jvmTarget = '17'
  38. }
  39. }

(Note: The code sections you provided appear to have HTML encoding, such as " and <. Make sure to use the appropriate characters in your actual code, as these are used to represent quotation marks and angle brackets.)

英文:

I'm trying make test application using Hibernate Search. I have note repository which
extend SimpleJpaRepository with required parameter jakarta.persistence.EntityManager. But when i try to create search session Search.session(entityManager) I get an error that the Search.session() need javax.persistence.EntityManager. So question is how can i create Search session using jakarta.persistence.EntityManager?

NoteRepository:

  1. @Repository
  2. @Transactional
  3. class NoteRepositoryImpl(
  4. private val entityManager: EntityManager,
  5. ) : SimpleJpaRepository<NoteEntity, Long>(NoteEntity::class.java, entityManager), NoteRepository {
  6. override fun search(query: String): List<NoteEntity> {
  7. val session = Search.session(entityManager)
  8. val result = session.search(NoteEntity::class.java)
  9. .where { it.match().fields("title", "tag", "content").matching(query) }
  10. .fetch(0, 100)
  11. return result.hits().map { it as NoteEntity }
  12. }
  13. }

Gradle file:

  1. plugins {
  2. id 'org.springframework.boot' version '3.0.4'
  3. id 'io.spring.dependency-management' version '1.1.0'
  4. id 'org.jetbrains.kotlin.jvm' version '1.7.22'
  5. id 'org.jetbrains.kotlin.plugin.spring' version '1.7.22'
  6. id "org.jetbrains.kotlin.plugin.jpa" version "1.7.22"
  7. id 'org.jetbrains.kotlin.plugin.allopen' version '1.7.22'
  8. }
  9. allOpen {
  10. annotation("jakarta.persistence.Entity")
  11. annotation("jakarta.persistence.Embeddable")
  12. annotation("jakarta.persistence.MappedSuperclass")
  13. }
  14. configurations {
  15. compileOnly {
  16. extendsFrom annotationProcessor
  17. }
  18. }
  19. repositories {
  20. mavenCentral()
  21. }
  22. dependencies {
  23. implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  24. implementation 'org.springframework.boot:spring-boot-starter-web'
  25. implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
  26. implementation 'org.jetbrains.kotlin:kotlin-reflect'
  27. developmentOnly 'org.springframework.boot:spring-boot-devtools'
  28. implementation 'org.hibernate.search:hibernate-search-mapper-orm:6.1.8.Final'
  29. implementation 'org.hibernate.search:hibernate-search-backend-lucene:6.1.8.Final'
  30. runtimeOnly 'org.postgresql:postgresql'
  31. annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
  32. testImplementation 'org.springframework.boot:spring-boot-starter-test'
  33. }
  34. tasks.withType(KotlinCompile) {
  35. kotlinOptions {
  36. freeCompilerArgs = ['-Xjsr305=strict']
  37. jvmTarget = '17'
  38. }
  39. }

答案1

得分: 3

由于您正在使用基于jakarta.*的Spring Boot 3,您需要使用Jakarta版本的orm-mapper:

  1. implementation 'org.hibernate.search:hibernate-search-mapper-orm-jakarta:6.1.8.Final'
英文:

Since you are using Spring Boot 3, which is based on jakarta.* you'd need to use a jakarta version of orm-mapper:

  1. implementation 'org.hibernate.search:hibernate-search-mapper-orm-jakarta:6.1.8.Final'

huangapple
  • 本文由 发表于 2023年3月31日 22:49:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/75899893.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定