【问题标题】:Caused by: java.lang.IllegalArgumentException: java.lang.Object is not an indexed entity or a subclass of an indexed entity原因:java.lang.IllegalArgumentException:java.lang.Object 不是索引实体或索引实体的子类
【发布时间】:2014-02-28 23:54:13
【问题描述】:

我正在使用以下技术

挂毯 5.4-beta-2

休眠核心 5.2.5

com.sybase jconn4 7.0.7

休眠搜索 4.2.0.Final

当我尝试部署我的应用程序时,我遇到了以下异常。

Caused by: java.lang.IllegalArgumentException: java.lang.Object is not an indexed entity or a subclass of an indexed entity

有人知道这个异常是什么意思吗?我进行了无数次搜索,但似乎找不到任何相关信息。

我的 hibernate.cfg.xml 看起来像这样。

    <property name="hibernate.dialect">org.hibernate.dialect.SybaseAnywhereDialect</property>

    <!--DEV Database Connection-->   
    <property name="hibernate.connection.driver_class">com.sybase.jdbc4.jdbc.SybDataSource</property>
    <property name="hibernate.connection.url">jdbc:sybase:Tds:domain:5000/test</property>     
    <property name="hibernate.connection.username">****</property>
    <property name="hibernate.connection.password">****</property> 

    <property name="hibernate.hbm2ddl.auto">validate</property>  



@Entity
@Indexed
@AnalyzerDef(
        name = "customanalyzer",
        tokenizer =
        @TokenizerDef(factory = StandardTokenizerFactory.class),
        filters = {
    @TokenFilterDef(factory = LowerCaseFilterFactory.class),})
@FullTextFilterDefs({
    @FullTextFilterDef(
            name = "managerFilter",
            impl = ManagerFilterFactory.class),
    @FullTextFilterDef(
            name = "employeeFilter",
            impl = EmployeeFilterFactory.class),
    @FullTextFilterDef(
            name = "employeeTimeSheetFilter",
            impl = EmployeeTimeSheetFilterFactory.class),
    @FullTextFilterDef(
            name = "supervisorFilter",
            impl = SupervisorFilterFactory.class),})
public class UserProfile extends StatefulEntity {

    @Field
    @Analyzer(definition = "customanalyzer")
    @Validate("required")
    @NonVisual
    @Column(
            nullable = false,
            unique = true)
    private String shortname;
    @Field
    @Analyzer(definition = "customanalyzer")
    private String firstName;
    @Field
    @Analyzer(definition = "customanalyzer")
    private String lastName;
    @Field
    @Analyzer(definition = "customanalyzer")
    private String middleInitial;
    @Field
    @Analyzer(definition = "customanalyzer")
    private String notesName;
    @Field
    @Analyzer(definition = "customanalyzer")
    // 2013.12.03 LDAP allows duplicate email addresses - need to play by the same rules
    @Column(unique = false)
    private String email;

员工

@Entity
@Indexed
@Table(name = "employee_profile")
public class EmployeeProfile extends AbstractProfileEntity {

    @NonVisual
    // We could return a DateFormat, but instead we'll return a String which DateField will coerce into a DateFormat.
    private String dateInFormatStr = "MM/dd/yyyy";
    @Field
    @Analyzer(definition = "customanalyzer")
    @Validate("required")
    @Column(
            nullable = false,
            unique = true)
    private String empId;
    @NonVisual
    private String author;

抽象简介

@MappedSuperclass
public abstract class AbstractProfileEntity extends AbstractAccrualEntity implements TransitoryProfile {

    @NonVisual
    @IndexedEmbedded
    @Validate("required")
    @ManyToOne
    @JoinColumn(name = "supervisorId", nullable = false)
    private UserProfile supervisor;
    @NonVisual
    @IndexedEmbedded
    @ManyToOne
    @JoinColumn(name = "managerId", nullable = true)
    private UserProfile manager;
    @NonVisual
    @Field
    @Analyzer(definition = "customanalyzer")
    private String notesName;

完整的堆栈跟踪

Feb 04, 2014 2:14:54 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter app
java.lang.RuntimeException: Exception constructing service 'RegistryStartup': Error invoking service contribution method org.domain.test.services.AppModule.initApplication(FullTextSession): java.lang.Object is not an indexed entity or a subclass of an indexed entity
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:75)
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:54)
    at $Runnable_574fc15253b4.delegate(Unknown Source)
    at $Runnable_574fc15253b4.run(Unknown Source)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:320)
    at org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:80)
    at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:112)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:983)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:548)
    at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1468)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:792)
    at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1447)
    at org.apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.java:303)
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:210)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2430)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2419)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.tapestry5.ioc.internal.OperationException: Error invoking service contribution method org.domain.test.services.AppModule.initApplication(FullTextSession): java.lang.Object is not an indexed entity or a subclass of an indexed entity
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:180)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:61)
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:78)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.addToOrderedConfiguration(RegistryImpl.java:624)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.getOrderedConfiguration(RegistryImpl.java:478)
    at org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$2.invoke(ServiceResourcesImpl.java:110)
    at org.apache.tapestry5.ioc.internal.ServiceResourcesImpl$2.invoke(ServiceResourcesImpl.java:107)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80)
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112)
    at org.apache.tapestry5.ioc.internal.ServiceResourcesImpl.getOrderedConfiguration(ServiceResourcesImpl.java:105)
    at org.apache.tapestry5.ioc.internal.AbstractServiceCreator.getOrderedConfiguration(AbstractServiceCreator.java:123)
    at org.apache.tapestry5.ioc.internal.AbstractServiceCreator.access$200(AbstractServiceCreator.java:35)
    at org.apache.tapestry5.ioc.internal.AbstractServiceCreator$1.findResource(AbstractServiceCreator.java:103)
    at org.apache.tapestry5.ioc.internal.util.DelegatingInjectionResources.findResource(DelegatingInjectionResources.java:38)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateInjection(InternalUtils.java:230)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils.access$000(InternalUtils.java:49)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:288)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils$4.invoke(InternalUtils.java:285)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80)
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils.calculateParameters(InternalUtils.java:292)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils$22.invoke(InternalUtils.java:1408)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils$22.invoke(InternalUtils.java:1403)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80)
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112)
    at org.apache.tapestry5.ioc.internal.util.InternalUtils.createConstructorConstructionPlan(InternalUtils.java:1400)
    at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan(ConstructorServiceCreator.java:52)
    at org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:61)
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80)
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112)
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
    at org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
    at org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
    at org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:63)
    at org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:54)
    at org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:80)
    at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:89)
    at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1112)
    at org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
    at org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:66)
    ... 56 more
Caused by: java.lang.RuntimeException: Error invoking service contribution method org.domain.test.services.AppModule.initApplication(FullTextSession): java.lang.Object is not an indexed entity or a subclass of an indexed entity
    at org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:130)
    at org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:80)
    at org.apache.tapestry5.ioc.internal.RegistryImpl$9.run(RegistryImpl.java:628)
    at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:55)
    ... 101 more
Caused by: java.lang.IllegalArgumentException: java.lang.Object is not an indexed entity or a subclass of an indexed entity
    at org.hibernate.search.impl.MassIndexerImpl.toRootEntities(MassIndexerImpl.java:103)
    at org.hibernate.search.impl.MassIndexerImpl.<init>(MassIndexerImpl.java:75)
    at org.hibernate.search.impl.FullTextSessionImpl.createIndexer(FullTextSessionImpl.java:209)
    at $FullTextSession_574fc15253bd.createIndexer(Unknown Source)
    at $FullTextSession_574fc15253bc.createIndexer(Unknown Source)
    at org.domain.test.services.AppModule.initApplication(AppModule.java:396)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:120)
    ... 104 more

【问题讨论】:

  • 您确定在休眠索引之前扫描您的实体吗?
  • 我遇到了这个问题。我把 \@Indexed 放在一个抽象基类中,问题就发生了。我将 \@Indexed 添加到任何派生类,问题消失了。

标签: hibernate lucene sybase tapestry hibernate-search


【解决方案1】:

如果有人遇到这个问题,我今天也遇到了同样的问题。我知道这已经晚了,但它可以帮助别人。

我的 IDE 在我的模型中自动导入了 org.springframework.stereotype.Indexed,而不是 org.hibernate.search.annotations.Indexed。将导入更改为正确的东西会立即解决问题。

【讨论】:

    【解决方案2】:
    <property name="hibernate.search.rebuildIndex">false</property>
    

    这让我的错误消失了。

    【讨论】:

      【解决方案3】:

      这似乎是使用 massindexer 进行休眠搜索时报告的错误

      https://hibernate.atlassian.net/browse/HSEARCH-1453

      我遇到的问题是我的一个实体被 @Indexed 注释了;我只是用@IndexedEmbedded 在实体中注释了我的一个属性,而没有用@Field 注释任何其他要索引的属性。

      临时解决方法是向索引添加另一个属性。这不太理想,因此欢迎任何建议。

      【讨论】:

      • 实际上,该问题是指当您未将 any 实体声明为 @Indexed 时,此消息(正确地)抱怨。我怀疑你遇到了不同的问题。
      • @Sanne 我仍然不能很好地理解问题,无法报告错误。我似乎不能每次都重复,而且例外似乎是通用的,可以真正帮助我找出问题所在。我开始认为这是由于在海量索引器运行之前未完全创建休眠表的结果。你的想法?
      猜你喜欢
      • 1970-01-01
      • 2014-12-29
      • 2011-09-06
      • 2019-01-31
      • 2015-09-22
      • 2019-12-30
      • 2012-09-03
      • 2020-09-23
      • 1970-01-01
      相关资源
      最近更新 更多