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

InvalidDataAccessapiUsageException:未知实体:UserWithRoles

韩寂离
2023-03-14

我正在使用Spring security进行一个Spring Boot项目,当我编辑用户时,我会得到一个InvalidDataAccessApiUsageException和一个TraceBack。以下是完整的信息:

// --------- ADD FRIEND (POST)------------
@PostMapping("/profile/friends/edit")
public String addFriend(@RequestParam long friendId, Model model) {

    User currentUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); //1. Get the current user

    User friend = usersRepo.getUserById(friendId);

    System.out.println(currentUser.getFirstName());
    System.out.println(friend.getFirstName());

    if(friend.getFriends() == null){ // if there is no friends list -->

        List<User> newFriends = new ArrayList<>(); // 1. Make a new friends list
        friend.setFriends(newFriends); // 2. give the new friends list to User

    }
    if(currentUser.getFriends() == null){ // if there is no friends list -->

        List<User> newFriends = new ArrayList<>(); // 1. Make a new friends list
        currentUser.setFriends(newFriends); // 2. give the new friends list to User

    }

    // --------- ADD USER TO FRIEND-----------
    currentUser.getFriends().add(friend);

    System.out.println(currentUser.getFriends().get(0).getUsername());

    // --------- ADD FRIEND TO USER------------
    friend.getFriends().add(currentUser);

    System.out.println(friend.getFriends().get(0).getUsername());

    // --------- SAVE TO DB -----------
    usersRepo.save(currentUser); // 3. save the list of users to the current users information
    usersRepo.save(friend); // 3. save the list of users to the current users information

    return "users/showConnections";
}

共有1个答案

司马辉
2023-03-14

问题是“SecurityContextHolder.getContext().getAuthentication().getPrincipal()”不返回用户对象,而是返回UserWithRoles对象。UserWithRoles用于设置currentuser变量。然后代码尝试使用userRepo保存currentuser,但由于userRepo不是User对象,因此崩溃了。这是一个UserWithRoles,不适合用户的空间。

这就是我所做的改变:

User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); //1. Get the current user
User currentUser = new User(user);
 类似资料:
  • 问题内容: 我正在尝试入门Hibernate 2nd Edition,而我一直试图将简单的工作示例与HSQLDB结合在一起。 当我跑步时,我得到 这是我得到的: Message.java PopulateMessages.java build.properties hibernate.cfg.xml build.xml 问题答案: 您的实体注释不正确, 必须 使用注释。您可以使用Hibernate

  • 问题内容: 我真的很想了解我的代码发生了什么。 我有一个独立的应用程序,它使用spring和Hibernate作为JPA,我正在尝试使用单个主类运行测试 我的主班 我的应用程序上下文是: 我的用户模型是: 我的DAO是: 这是我运行程序时出现的我的stacktrace错误: 问题答案: 您必须在会话工厂配置中列出您的类。如果使用,则可以自动发现实体。 为了在hibernate和spring中使用注

  • 我有一个测试车, 而applicatin.xml是 但它报告异常 java.lang.IllegalArgumentException:未知实体:com.chinalbs.entity.conductor(位于org.hibernate.ejb.abstractentyManagerImpl.persist(abstractentyManagerImpl.java:842)(位于sun.refle

  • 问题内容: 我正在尝试使用注释将Spring与Hibernate结合使用,并且出现以下错误: 这是我的设置… 我的实体: 我的豆子: } 我在Spring中启用注释: 当我通过BlazeDS从Flex应用程序调用Foo.addBar方法时收到错误消息。 我真的很想避免其他配置,而且似乎所有这些都可以解决。 我正在使用Spring 3.0.0.RC1,Hibernate Annotations 3.

  • 此实体由Spring控制器管理,方法如下: 服务类别为: 而DAO是这样的:

  • 我有一个Hibernate实体,,它工作正常: 我想确定此对象何时更改并在我的应用程序中更新一些。我能想到的最简单的方法是扩展并覆盖setter: 这在我的应用程序中工作得很好,但是当我开始持久化实体时,Hibernate抱怨它不知道什么是< code>ExtendedEvent。 我可以看出扩展Hibernate实体是一个不小的问题,尤其是当您开始添加字段时——但是我所希望的是Hibernate