Spring Arangodb 存储边缘但失败并出现 MappingException:找不到类型 class java.lang.Object 的 PersistentEntity
Spring Arangodb stores edge but fail with MappingException: Couldn't find PersistentEntity for type class java.lang.Object
当 arangtoDB 边缘收集 link 到不同的对象时,是否有人已经遇到同样的问题?并且能够使用 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 );
我的 link 存储在 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!
由于类型擦除,库无法在运行时检测通用字段 @To
的 class,因此找不到相关的持久化实体。
您可以通过创建 class:
来解决它
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 );
这样 Spring Data ArangoDB 将保存一个额外的类型提示字段 ("_class": "<pkg>.Link2UserOfItem"
) 并将在读取时使用它来反序列化它。
当 arangtoDB 边缘收集 link 到不同的对象时,是否有人已经遇到同样的问题?并且能够使用 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 );
我的 link 存储在 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!
由于类型擦除,库无法在运行时检测通用字段 @To
的 class,因此找不到相关的持久化实体。
您可以通过创建 class:
来解决它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 );
这样 Spring Data ArangoDB 将保存一个额外的类型提示字段 ("_class": "<pkg>.Link2UserOfItem"
) 并将在读取时使用它来反序列化它。