簡體   English   中英

Hibernate Search中LocalDate的DateBridge

[英]DateBridge for LocalDate in Hibernate Search

我在SpringBoot應用程序中使用Hibernate search 11.5.2.Final。

我正在嘗試搜索實體Book createdAt字段。

當我運行它時,應用程序退出,並顯示異常

Unable to create bean for LocalDateBridge

對於類型為Long字段,我也得到了相同的異常

我的實體看起來像這樣

@Indexed
@Entity
public class Book {
    @Id 
    private Long id;


    @Field
    @DateBridge(resolution=Resolution.DAY)
    private LocalDate createdAt;

    // Other fields and setters & getters
}

這是完整堆棧跟蹤


2019-08-05 13:42:57.789  WARN 14452 --- [nio-8080-exec-1] g.e.SimpleDataFetcherExceptionHandler    : Exception while fetching data (/Books) : Exception while calling bridge#objectToString
    entity class: com.app.model.Book
    entity property path: createdAt
    field bridge: TwoWayString2FieldBridgeAdaptor [stringBridge=org.hibernate.search.bridge.builtin.time.impl.LocalDateBridge@4ef6ee21]

org.hibernate.search.bridge.BridgeException: Exception while calling bridge#objectToString
    entity class: com.app.model.Book
    entity property path: createdAt
    field bridge: TwoWayString2FieldBridgeAdaptor [stringBridge=org.hibernate.search.bridge.builtin.time.impl.LocalDateTimeBridge@4ef6ee21]
    at org.hibernate.search.bridge.util.impl.ContextualExceptionBridgeHelper.buildBridgeException(ContextualExceptionBridgeHelper.java:104) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.bridge.util.impl.ContextualExceptionBridgeHelper$TwoWayConversionContextImpl.objectToString(ContextualExceptionBridgeHelper.java:161) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity.objectToString(DocumentBuilderIndexedEntity.java:274) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity.objectToString(DocumentBuilderIndexedEntity.java:1066) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.engine.spi.DocumentBuilderIndexedEntity.objectToString(DocumentBuilderIndexedEntity.java:1049) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.query.dsl.impl.FieldContext.objectToString(FieldContext.java:75) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder.buildSearchTerm(ConnectedMultiFieldsTermQueryBuilder.java:149) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder.createQuery(ConnectedMultiFieldsTermQueryBuilder.java:113) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.query.dsl.impl.ConnectedMultiFieldsTermQueryBuilder.createQuery(ConnectedMultiFieldsTermQueryBuilder.java:81) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_40]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_40]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_40]
    at io.leangen.graphql.metadata.execution.SingletonMethodInvoker.execute(SingletonMethodInvoker.java:21) ~[spqr-0.9.9.jar:na]
    at io.leangen.graphql.metadata.Resolver.resolve(Resolver.java:100) ~[spqr-0.9.9.jar:na]
    at io.leangen.graphql.execution.OperationExecutor.lambda$execute$1(OperationExecutor.java:93) ~[spqr-0.9.9.jar:na]
    at io.leangen.graphql.execution.OperationExecutor$$Lambda$1440/231233146.aroundInvoke(Unknown Source) ~[na:na]
    at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:98) ~[spqr-0.9.9.jar:na]
    at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:94) ~[spqr-0.9.9.jar:na]
    at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:59) ~[spqr-0.9.9.jar:na]
    at io.leangen.graphql.generator.OperationMapper$$Lambda$1152/966240044.get(Unknown Source) ~[na:na]
    at graphql.execution.ExecutionStrategy.fetchField(ExecutionStrategy.java:261) [graphql-java-11.0.jar:na]
    at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:202) [graphql-java-11.0.jar:na]
    at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:70) [graphql-java-11.0.jar:na]
    at graphql.execution.Execution.executeOperation(Execution.java:159) [graphql-java-11.0.jar:na]
    at graphql.execution.Execution.execute(Execution.java:101) [graphql-java-11.0.jar:na]
    at graphql.GraphQL.execute(GraphQL.java:573) [graphql-java-11.0.jar:na]
    at graphql.GraphQL.parseValidateAndExecute(GraphQL.java:515) [graphql-java-11.0.jar:na]
    at graphql.GraphQL.executeAsync(GraphQL.java:489) [graphql-java-11.0.jar:na]
    at graphql.GraphQL.execute(GraphQL.java:420) [graphql-java-11.0.jar:na]
    at io.leangen.graphql.spqr.spring.web.servlet.DefaultGraphQLExecutor.execute(DefaultGraphQLExecutor.java:23) [graphql-spqr-spring-boot-autoconfigure-0.0.4.jar:na]
    at io.leangen.graphql.spqr.spring.web.servlet.DefaultGraphQLExecutor.execute(DefaultGraphQLExecutor.java:11) [graphql-spqr-spring-boot-autoconfigure-0.0.4.jar:na]
    at io.leangen.graphql.spqr.spring.web.GraphQLController.executeJsonPost(GraphQLController.java:42) [graphql-spqr-spring-boot-autoconfigure-0.0.4.jar:na]
    at io.leangen.graphql.spqr.spring.web.GraphQLController$$FastClassBySpringCGLIB$$db77e769.invoke(<generated>) [graphql-spqr-spring-boot-autoconfigure-0.0.4.jar:na]
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring-core-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at net.bull.javamelody.MonitoringSpringInterceptor.invoke(MonitoringSpringInterceptor.java:76) [javamelody-core-1.77.0.jar:1.77.0]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) [spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at io.leangen.graphql.spqr.spring.web.servlet.DefaultGraphQLController$$EnhancerBySpringCGLIB$$3b8cd271.executeJsonPost(<generated>) [graphql-spqr-spring-boot-autoconfigure-0.0.4.jar:na]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.19.jar:9.0.19]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_40]
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.time.temporal.TemporalAccessor
    at org.hibernate.search.bridge.builtin.time.impl.TemporalAccessorStringBridge.objectToString(TemporalAccessorStringBridge.java:42) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.bridge.util.impl.TwoWayString2FieldBridgeAdaptor.objectToString(TwoWayString2FieldBridgeAdaptor.java:33) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    at org.hibernate.search.bridge.util.impl.ContextualExceptionBridgeHelper$TwoWayConversionContextImpl.objectToString(ContextualExceptionBridgeHelper.java:158) ~[hibernate-search-engine-5.11.2.Final.jar:5.11.2.Final]
    ... 151 common frames omitted


嘗試刪除@DateBridge(resolution=Resolution.DAY) :對於您的情況,它無用,因為本地日期的分辨率已經是當天。

該問題可能是由於java.time類型不支持顯式解析,而僅對遺留java.util.Date / java.util.Calendar類型(實際上可能有用)支持。

如果這不能解決問題,請在您的問題中粘貼完整的堆棧跟蹤。

根據您的堆棧跟蹤,您正在將String對象傳遞給查詢構建器,而應該使用LocalDate對象,因為您的字段的類型為LocalDate 將用戶提供的字符串解析為LocalDate ,然后將該對象傳遞給查詢構建器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM