微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Protobuf 定义类作为 Hibernte 实体类:org.hibernate.MappingException

如何解决使用 Protobuf 定义类作为 Hibernte 实体类:org.hibernate.MappingException

假设下面的简单实体

  • 表名:学生
  • 列:id,名称

自动生成的 Protobuf 类将具有

  • StudentOuterClass$Student$Builder
  • StudentOuterClass$Student

StudentOuterClass 是包装类。

因为上面是一个自动生成的类。我们不能在类中使用任何注解。

因此我尝试使用 XML 配置方法进行映射,如下所示

    <entity class="student.StudentOuterClass$Student" name="Student" >
    <table name="Student"/>
    <attributes>
        <id name="id_">
            <column name="id" />
        </id>
        <basic name="name_">
            <column name="name" length="30"/>
        </basic>
    </attributes>
    </entity>

但是,在尝试映射时,我收到以下异常。

Exception in thread "main" org.hibernate.MappingException: property mapping has wrong number of columns: currency.StudentOuterClass$Student.name_ type: object

自动生成的 Protobuf 类是一个不可变的类,提供了 Builder 来创建实例。它在内部将成员保存为对象类型 - 'private volatile java.lang.Object name_;'

有没有办法解决这个异常?

或者由于我们使用反射并访问内部字段,还有其他更好的方法可以通过 Builder 进行这种映射吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。