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

Spring Boot项目调用User类setCity方法提示未定义问题咨询

问题原因

你在Spring Boot主类中导入的User类是Spring Security自带的org.springframework.boot.autoconfigure.security.SecurityProperties.User,该类仅提供了Spring Security内置用户的基础属性方法,没有你自定义的setCity方法。你自己编写的带setCity方法的User实体类在com.example.spring.jpadata.entities包下,导错类是报错的核心原因。

解决方案

方案一(推荐,无类名冲突场景)

直接替换错误的导入语句即可:

  1. 删除主类顶部的错误导入:
import org.springframework.boot.autoconfigure.security.SecurityProperties.User;
  1. 新增你自己的实体类导入:
import com.example.spring.jpadata.entities.User;

修改后的完整主类参考:

package com.example.spring.jpadata;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

import com.example.spring.jpadata.dao.UserRepository;
import com.example.spring.jpadata.entities.User;

@SpringBootApplication
public class JpaApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(JpaApplication.class, args);
        UserRepository userRepository = context.getBean(UserRepository.class);
        User user = new User();
        user.setName("XYZ");
        user.setCity("Delhi");
    }
}

方案二(两个User类都需要使用的场景)

如果你的业务同时需要用到Spring Security的User类和你自定义的实体类,直接写全类名区分即可,不需要改导入语句,创建自定义User实例时的代码改成:

com.example.spring.jpadata.entities.User user = new com.example.spring.jpadata.entities.User();

完成修改后重新编译项目即可解决报错。

内容的提问来源于stack exchange,提问作者Apratim Dutta Choudhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:48:00