Spring Arangodb存储边缘,但失败并显示MappingException:找不到类型类别java.lang.Object的PersistentEntity

yptwkmov  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(127)

当arangtoDB边缘集合链接到不同的对象时,是否有人已经遇到了同样的问题?并且能够使用ArangoSpring驱动程序来操作,而没有任何问题?
我有这个优势

@Data
@Edge("link2User")
public class Link2User<T> {
  @Id
  private String key;

  @From
  private User user;

  @To
  private T to;

  @Getter @Setter private String data;
  ...
  public Link2User(final User user, final T to) {
    super();
    this.user = user;
    this.to = to;
  ...
}

存储库

@Component
public interface Link2UserRepository<T> extends ArangoRepository<Link2User<T>, String> {
}

当我试着打电话时:

@Autowired
Link2UserRepository<Item> l2uRepository;

...

Link2User<Item> link1 = new Link2User<Item>( user, Item);
v2uRepository.save(link1 );

我的链接存储在ArangoDB中,但出现错误:

DOP. org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.lang.Object!] with root cause
org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.lang.Object!
mfuanj7w

mfuanj7w1#

由于类型擦除,库在运行时无法检测到泛型字段@To的类,因此它无法找到相关的持久性实体。
您可以建立类别来解决这个问题:

public class Link2UserOfItem extends Link2User<Item> {
    public Link2UserOfItem(final User user, final Item to) {
        super(user,to);
    }
}

还有:

@Autowired
Link2UserRepository<Item> l2uRepository;

...

Link2User<Item> link1 = new Link2UserToItem( user, Item);
l2uRepository.save(link1 );

通过这种方式,SpringDataArangoDB将保存一个额外的类型提示字段("_class": "<pkg>.Link2UserOfItem"),并在读取时使用它来反序列化它。

相关问题