在集成我们现有的应用程序之前,我正在试验HibernateSearch 6.2.0.Alpha1的投影功能。
我已经使用JHIPSTER sample project创建了一个Spring-Boot项目。并在POM.XML和APPLICATION*.yml中添加了休眠搜索依赖项和配置。使用JHipster是因为它帮助我处理样板代码和虚假数据。
我已经使用-parameters
和jandex
配置了pom.xml。应用程序成功运行并将数据加载到数据库中。我能够使用我们根据文档编写的实用程序来创建质量索引。
然而,当尝试使用投影搜索数据时,我们收到错误Exception in searchWithProjection() with cause = 'NULL' and exception = 'HSEARCH700112: Invalid object class for projection: com.sample.shop.service.projections.dto.Address. Make sure that this class is mapped correctly, either through annotations (@ProjectionConstructor) or programmatic mapping. If it is, make sure the class is included in a Jandex index made available to Hibernate Search.'
。如果我们在没有投影的情况下进行搜索,同样的查询/逻辑也可以很好地工作。
前男友。如果您查看上面链接的存储库中的文件AddressResource.java & AddressService.java
,您可以找到两个分别用于投影和非投影的实现。虽然没有投影的项目运行得很好,但有项目的项目却犯了错误。
我觉得这可能是一些配置问题,但我自己也搞不清楚。感谢您在配置/代码方法方面的帮助。
以下机票我已经看过了,敬请告知:
1.Hibernate Search 6 combine projections not working
1.Hibernate搜索中的单一返回类型
2条答案
按热度按时间xnifntxz1#
谢谢你的复制者。这是一个错误:https://hibernate.atlassian.net/browse/HSEARCH-4724
我在这里建议了一个解决方法:https://github.com/anothergoodguy/spring-data-hibernate-search/pull/1
简而言之:
然后,瞧。
注意:这只是一种解决办法,并且依赖于随时可能崩溃的内部代码。但是,好吧,至少它是有效的,所以在错误被修复之前它是好的。
vh0rcniy2#
以下是运行该应用程序的说明:
所有需要的生态系统,如Elasticearch、kibana和MySQL都添加在
src/main/docker/eco.yml
下的eco.yml
文件中。请使用以下命令启动生态系统docker-compose -f src/main/docker/eco.yml up -d && docker-compose -f src/main/docker/eco.yml logs -f
在不同的终端选项卡/窗口上,使用以下命令
./mvnw clean package -Pprod,api-docs -Dskip.Tests -Dmaven.test.skip=true
构建应用程序以运行应用程序运行以下命令java -jar target/shop-app-0.0.1-SNAPSHOT.jar
一旦应用程序启动,它将显示它正在侦听http://localhost:8080(http://localhost:8080)。请在浏览器上打开相同的URL,并使用默认管理员用户:
admin
和密码:admin
登录。然后请从管理员菜单和API菜单项导航到SWAGGER。我们需要从相同的swagger窗口对已经从swagger加载的虚假数据编制大量索引:通过在资源ElasticSearch大规模索引API上执行**/api/mount/index上的帖子
请进入地址-资源**:
1.不带投影的请求使用查询字符串
aa
访问/api/_search/addresses
-这将导致成功1.带有投影的请求使用相同的查询字符串
aa
访问/_search/addresses/projection
-这将导致失败