You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data DynamoDB实现DynamoDB JSON与Java ORM映射报错如何解决

错误原因

核心问题是注解混用和JPA无法识别自定义嵌套类型,具体分两点:

  • 你在同一个实体类上同时标注了JPA的@Entity注解和DynamoDB的@DynamoDBTable注解,Spring启动时会同时加载JPA(Hibernate)和DynamoDB的映射逻辑。@DynamoDBDocument是DynamoDB专属的嵌套文档注解,仅对Spring Data DynamoDB生效,Hibernate完全无法识别In这个自定义类型要怎么映射为关系型数据库的字段,所以抛出类型识别失败的异常。
  • 代码本身存在语法错误:getIn()方法中返回了不存在的变量insights,应该返回成员变量in。
排查解决步骤
  1. 首先明确你要使用的持久层框架:如果是对接DynamoDB,直接移除类上的@Entity注解,不要和Spring Data JPA混用,DynamoDB是NoSQL数据库,不需要JPA的ORM映射逻辑。
  2. 修复代码语法错误,把getIn()方法的返回值改为in:
@DynamoDBAttribute(attributeName="in")
public In getIn() {
    return in;
} 
  1. 如果你确实需要同时对接关系型数据库和DynamoDB,不要用同一个实体类做两种映射,拆分两个独立的DTO/实体类分别对应JPA和DynamoDB的映射规则。JPA那边如果要存嵌套结构,可以用@Embeddable和@Embedded注解标注嵌套类,或者用@Type注解指定JSON序列化类型把嵌套对象转为字符串存到单列。
  2. 检查启动类的包扫描配置,不要让JPA的@EntityScan扫描到DynamoDB的实体类,把两类实体放到不同的包下分开扫描。

内容的提问来源于stack exchange,提问作者Jagadheeswaran Mohan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:27:05