简体   繁体   English

Cassandra 异常:在类上找不到@Table 注释

[英]Cassandra Exception : @Table annotation not found on the class

I am new to cassandra database.我是 cassandra 数据库的新手。 I am trying to map a table to a java class.我正在尝试将表映射到 Java 类。

My java class:我的java类:

@Table("user")
public class User implements Serializable 
{   
    @PrimaryKey
    @Column(value = "id")
    private int id;
    @Column(value = "first_name")
    private String firstName;

    //setters and getters
}

Dao class:道类:

 public class UserDaoImpl {

        Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
        Session session = cluster.connect("agtr_api");
        MappingManager manager = new MappingManager(session);
        Mapper<User> mapper = manager.mapper(User.class);
        public User getUserById(int id){    
             User u = mapper.get(id);
             return u;
        }     
    }

When i run my application on server, It throws following exception:当我在服务器上运行我的应用程序时,它抛出以下异常:

SEVERE: Servlet.service() for servlet [spring] in context with path [/aggregator-api] threw exception [Request processing failed;严重:servlet [spring] 的 Servlet.service() 在路径为 [/aggregator-api] 的上下文中抛出异常 [请求处理失败; nested exception is java.lang.IllegalArgumentException: @Table annotation was not found on class com.data.User] with root cause java.lang.IllegalArgumentException: @Table annotation was not found on class com.data.User at com.datastax.driver.mapping.AnnotationChecks.getTypeAnnotation(AnnotationChecks.java:43) at com.datastax.driver.mapping.AnnotationParser.parseEntity(AnnotationParser.java:76) at com.datastax.driver.mapping.MappingManager.getMapper(MappingManager.java:226) at com.datastax.driver.mapping.MappingManager.mapper(MappingManager.java:182) at com.etl.aapi.common.dao.UserDaoImpl.(UserDaoImpl.java:19) at com.etl.aapi.common.controller.UserController.a(UserController.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.嵌套异常是 java.lang.IllegalArgumentException: @Table annotation was not found on class com.data.User] 根本原因 java.lang.IllegalArgumentException: @Table annotation was not found on class com.data.User at com.datastax。 driver.mapping.AnnotationChecks.getTypeAnnotation(AnnotationChecks.java:43) at com.datastax.driver.mapping.AnnotationParser.parseEntity(AnnotationParser.java:76) at com.datastax.driver.mapping.MappingManager.getMapper(MappingManager.java: 226) 在 com.datastax.driver.mapping.MappingManager.mapper(MappingManager.java:182) 在 com.etl.aapi.common.dao.UserDaoImpl.(UserDaoImpl.java:19) 在 com.etl.aapi.common。 controller.UserController.a(UserController.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.springframework。 web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) at org.springframework.web.servlet.FrameworkServlet.processRequest(Fra web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) at org.springframework.web.servlet.mvc.method。 annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:832) at org.springframework.web.servlet.mvc.method。 annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:743) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet. java:961) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:895) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(Fra meworkServlet.java:967) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.Aut meworkServlet.java:967) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 在 org.springframework.web.servlet .FrameworkServlet.service(FrameworkServlet.java:843) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org. apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) 在 org.apache.catalina .core.StandardContextValve.invoke(StandardContextValve.java:122) 在 org.apache.catalina.authenticator.Aut henticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thre henticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) .apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:958) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter) .java:452) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 在 org.apache.tomcat。 util.net.JioEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:第 617 章ad.run(Thread.java:745) ad.run(Thread.java:745)

You can declare also you keyspace name.您也可以声明您的密钥空间名称。 Try to use the complete syntax as below:尝试使用完整的语法如下:

@Table(keyspace = "yourKeyspace", name = "yourTable")

The "@Annotation" error is misleading as you rightly guess and the exception does not directly tell what is the actual error. “@Annotation”错误具有误导性,因为您猜对了,并且异常并没有直接说明实际错误是什么。 The underlying problem would always be in your Domain/Model class fields/columns definition such as column name missing, miss match etc, always watch out your Domain/Model class.潜在的问题总是在您的域/模型类字段/列定义中,例如列名丢失、不匹配等,请始终注意您的域/模型类。

Besides, If you use Achilles library and @Table annotation from Achilles, you will not get correct error.此外,如果您使用 Achilles 库和 Achilles 的 @Table 注释,您将不会得到正确的错误。 As a workaround you can additionally use @Table annotation from DataStax driver which will try to throw you more details in the exception stack trace.作为一种解决方法,您还可以使用来自 DataStax 驱动程序的 @Table 注释,它会尝试在异常堆栈跟踪中向您抛出更多详细信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM