当前位置: 首页 > 知识库问答 >
问题:

Karaf 4.1-从Apache Aries代理到Cassandra实体注释的ClassCastException

梅欣然
2023-03-14

我有一个大的问题,在karaf 4.1.0-SNAPSHOT使用datastax Java驱动程序映射,我需要得到注释@表从cassandra实体在这种情况下:

@Table(name = "clients")
public class Client implements Serializable {

    @PartitionKey
    @Column(name = "client_id")
    private String clientId;
    @Column(name = "client_secret")
    private String clientSecret;

    //getters and setters ...
}

这个实体在一个模型包中,我有一个服务包和一个持久性包,当我尝试在持久性包中这样做时:

@Override
public void save(Serializable obj, Class clazz) {
    System.out.println(((Table)clazz.getAnnotations()[0]).name());
}

我得到这个错误在System.out.println行:

java.lang.ClassCastException: com.sun.proxy.$Proxy110 cannot be cast to com.datastax.driver.mapping.annotations.Table
    at io.twim.cassandra.TwimCassandraImpl.save(TwimCassandraImpl.java:159) [216:twim-cassandra:1.0.0.SNAPSHOT]
    at Proxyc0a03eb5_6454_4ea2_a12f_daddf586d502.save(Unknown Source) [?:?]
    at io.twim.core.users.TwimServiceUserImpl.saveApplicationClient(TwimServiceUserImpl.java:50) [218:twim-core:1.0.0.SNAPSHOT]
    at Proxy60a7b95f_6d2d_4487_bd18_dfd7c359a958.saveApplicationClient(Unknown Source) [?:?]
    at io.twim.rest.register.ClientRegistrationImpl.init(ClientRegistrationImpl.java:69) [223:twim-rest:1.0.0.SNAPSHOT]
    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:497) ~[?:?]
    at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299) [12:org.apache.aries.blueprint.core:1.7.0]

我该怎么解决这个问题?有人知道吗?

编辑过

共有1个答案

鞠修雅
2023-03-14

在java中,任何注释在运行时都表示为代理。所以你有时可以碰到这个问题。

你可以试着用clazz。getAnnotation(Table.class)。取而代之的是名字。

 类似资料:
  • 我用lombook注释了实体类(https://projectlombok.org/features/all): 我有使用这个实体从数据库中给我数据的服务。最后我尝试从会员对象中获取一些数据 但我在成员对象中没有任何getter。当我写我有错误(IDEA建议我创建getter'getName()')。如何将lombook与jpa实体一起使用?如何访问用lombok注释(如@Getter或@Sett

  • 我有两个映射到OneToMany、ManyToOne的类,我得到了异常: org.hibernate.annotationException:mappedBy引用了一个未知的目标实体属性:entity_package.ticketentity.ownerEntity in entity_package.userentity.ownedTickets 公共类TicketEntity实现可序列化{ 怎

  • 问题内容: 我有一个名为@Pojo的自定义注释,可用于自动生成Wiki文档: 我这样使用它: 注释资源方法,以便注释处理器可以自动生成描述所需资源和类型的Wiki页面。 我需要在注释处理器中读取该字段的值,但出现运行时错误。 在我的处理器的源代码中,我有以下几行: 但实际的类不适用于处理器。我认为我需要一个替代品来代替实际课程。我不确定该怎么买。 我得到的错误是: 该是我的一个提到的一类注释。 不

  • 问题内容: 我有一个包,其中包含带注释的实体类,我将其导入到Web项目中。当tomcat部署项目时,不会扫描jar中的实体类以查找注释。有没有办法告诉spring在jar文件中搜索带注释的类?即: 问题答案: 如果您指的是带注释的类,则与它们无关。类是由Hibernate发现的,因此您需要配置Hibernate,而不是Spring。 如果您通过JPA使用Hibernate(即具有),则需要添加以下

  • 本文向大家介绍美化java代码,从合理注释开始,包括了美化java代码,从合理注释开始的使用技巧和注意事项,需要的朋友参考一下 请停止代码注释 “干净的代码应该像写好的散文一样” - Robert C. Martin 不良代码的通病就是有很多注释。这是凌乱的源代码最明显的迹象。 每个程序员的目标应该是编写干净和富有表现力的代码,以避免代码注释。每个变量,函数和类的目的应该隐含在其名称和结构中。 当

  • 问题内容: 一个运行了几个月的应用程序已经停止使用已经有几个月历史的JPA 批注。在进行集成测试时,我看到许多“ ”类型错误。 我不清楚这里出了什么问题。 我没有文件,因为我正在使用hibernate实体管理器。由于我仅使用注释,因此我的实体没有.hbm.xml文件。我的文件很小,可以正常保存。 我显然丢失了一些东西,但不能动弹。 我正在使用hibernate批注3.2.1,hibernate-e