有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mysql java。sql。SQLSyntaxErrorException:未知列“user0”。“字段列表”中的“证书状态”

我开发了一个spring boot web应用程序,并尝试使用以下控制器实现从MySQL数据库中逐个用户检索电子邮件

@RequestMapping("/api/v1/")
@RestController()
public class UserController {
  private UserService userService;

  public UserController(UserService userService) {
    this.userService = userService;
  }

  
    @GetMapping("/users/email/{email}")
    public User findUserByPrincipalId(@PathVariable String email) {
        return userService.getUserByPrincipalId(email);
    }

}



@Repository
public interface UserRepository extends CrudRepository<User, Long> {


  User getUserByPrincipalId(String principalId);

  Boolean existsByPrincipalId(String principalId);
}

这是用户实体类

@Entity(name = "sys_user")
@Table(name = "sys_user", schema = "mobile")
public class User {

  @Id
  @Column(name = "id")
  @GeneratedValue(strategy= GenerationType.IDENTITY)
  private long id;

  @Basic
  @Column(name = "principal_id")
  private String principalId;

  @Basic
  @Column(name = "passwd")
  private String password;

  @Basic
  @Column(name = "prefixName")
  private String prefix = "";

  @Basic
  @Column(name = "firstName")
  private String firstName = "";

  @Basic
  @Column(name = "middleIntial")
  private String middleInitial = "";

  @Basic
  @Column(name = "lastName")
  private String lastName = "";

  @Basic
  @Column(name = "contactTypeId")
  private long contactTypeId = 0;

  @Basic
  @Column(name = "phone")
  private String phone = "";

  @Basic
  @Column(name = "fax")
  private String fax = "";

  @Basic
  @Column(name = "mobile")
  private String mobile = "";

  @Basic
  @Column(name = "lastLogon")
  private Date lastLogon;

  @Basic
  @Column(name = "lastIP")
  private String lastIP;

  @Basic
  @Column(name = "status")
  private int status;

  @Basic
  @Column(name = "loginsInPeriod")
  private int logInsInPeriod;

  @Basic
  @Column(name = "createdOn")
  private Date createdOn;

  @Basic
  @Column(name = "lastModified")
  private Date lastModified;

  @Basic
  @Column(name = "secondaryemail")
  private String secondaryEmail;


  @Basic
  @Column(name = "salt")
  private String salt;
  
  @Basic
  @Column(name = "certStatus")
  private short certstatus;

  @OneToMany
  @JoinColumn(name = "id")
  private List<UserRole> userRoles;


...


}

财产。亚马尔

spring:
  profiles: local
  datasource:
    url: jdbc:mysql://localhost:3306/jacplus?serverTimezone=UTC
    username: abc
    password: abc
    driver-class-name: com.mysql.cj.jdbc.Driver
    jpa:
      hibernate:
        naming:
          physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

这是MySQL数据库中的表结构

表:系统用户

Columns:
id bigint(20) AI PK 
principal_id varchar(64) 
passwd varchar(128) 
prefixName char(8) 
firstName varchar(32) 
middleIntial char(1) 
lastName varchar(32) 
contactTypeId bigint(20) 
phone char(20) 
fax char(20) 
mobile char(20) 
lastLogon timestamp 
lastIP varchar(64) 
status smallint(6) 
loginsInPeriod int(11) 
createdOn datetime 
lastModified datetime 
secondaryemail varchar(64) 
salt varchar(64) 
certStatus smallint(6)

但是当我在控制器类中调用以下端点时。 http://localhost:8082/api/v1/users/email/test@gmail。com

我在运行时遇到以下异常

org.hibernate.exception.SQLGrammarException: could not extract ResultSet
        at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java
:63)
        at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConv
erter.java:42)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
        at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
        at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:67)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:2292)
        at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2050)
        at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:2012)

    Caused by: java.sql.SQLSyntaxErrorException: Unknown column
    'user0_.cert_status' in 'field list'
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
            at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
            at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
            at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:1003)
            at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
            at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
            at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:57)
            ... 181 common frames omitted 2020-12-17 18:00:47,532 WARN  jacplus-subscriptions-service [XNIO-5 task-1] fcd93f1a-3503-4b

我花了很多时间在网上寻找解决这个问题的方法。但我还是找不到解决办法


共 (0) 个答案