Skip to main content
 首页 » 编程设计

hibernate中由 : java. lang.IllegalArgumentException 引起 : java. lang.Object 不是索引实体或索引实体的子类

2024年11月24日68dudu

我正在使用以下技术

Tapestry 5.4-beta-2

hibernate 核心5.2.5

com.sybase jconn4 7.0.7

hibernate-search 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 

请您参考如下方法:

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

我的 IDE 在我的模型中自动导入了 org.springframework.stereotype.Indexed,而不是 org.hibernate.search.annotations.Indexed。将导入更改为正确的内容立即修复了问题。