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

如何从JPA查询更新MySQL表时间戳?

闻人弘雅
2023-03-14

这是我的模型:

@Entity(name = "checkinusers")
public class User {

    @Id
    @JsonIgnore
    @ApiModelProperty(hidden = true)
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", nullable = false, columnDefinition = "INT(1)")
    private long userId;

    @Column(name = "username", nullable = false)
    private String username;

    @Column(name = "password", nullable = false, columnDefinition = "TEXT")
    private String password;

    @Column(name = "salt", nullable = false, columnDefinition = "TEXT")
    private String salt;

    @ApiModelProperty(hidden = true)
    @Column(name = "lastlogin", nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private Date created;

方法如下:

@Modifying
@Transactional
@Query("UPDATE User u SET  u.created ='0000-00-00 00:00:00' WHERE u.username = :username ")
 void updateLastLogin(@Param("username") String username);

这是错误我得到当我尝试启动Spring应用程序

未能
在项目 licenta 上执行目标 org.springframework.boot:spring-boot-maven-plugin:1.5.9.RELEASE:run(default-cli) 在项目 licenta 上:运行时发生异常。 null: InvocationTargetException: 创建名为 'userController' 的 bean 时出错:通过字段 'userService' 表示的不满意的依赖项;嵌套的异常是 org.springframework.beans.factory.BeanCreationException:创建名为 'userService' 的 Bean 时出错:调用 init 方法失败;嵌套异常是 java.lang。IllegalArgumentException: 验证方法公共抽象 void com.example.licenta.service.UserService.update(java.lang.String)!org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [UPDATE User u SET u.created ='0000-00-00 00:00:00' WHERE u.username = :user name ]

共有1个答案

敖硕
2023-03-14

实际问题似乎是 JPA 不知道 User 实体:

org.hibernate.hql.internal.ast。QuerySyntaxException:未映射用户

当您在< code>@Entity注释中指定了一个专用名称时,您需要在这个实体的所有JPA查询中使用这个名称:

@Entity(name = "checkinusers")

也就是说,查询将需要:

@Query("UPDATE checkinusers u SET  u.created = '0000-00-00 00:00:00' WHERE u.username = :username ")

详见本问题。

 类似资料:
  • 首先,我知道从MySQL本身尝试这样做是不允许的: http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html 当我尝试使用,我得到了“存储过程中不允许加载数据”。 我是在MySQL中移动数据的初学者,我意识到这可能不是它设计用来处理的任务。因此,我应该使用什么方法从CSV文件中获取数据并定期将其附加到表中?(我对

  • 问题内容: 在页面的页脚中,我想添加诸如“最后更新xx / xx / 200x”之类的内容,该日期为最后一次更新某些mySQL表的时间。 最好的方法是什么?有检索上次更新日期的功能吗?每次需要此值时都应该访问数据库吗? 问题答案: 在更高版本的MySQL中,您可以使用数据库来告诉您何时更新了另一个表: 当然,这确实意味着要打开与数据库的连接。 另一种选择是每当更新MySQL表时“触摸”特定文件:

  • 我是playframework应用程序开发人员。我使用jpa中的createNativeQuery方法通过select查询从表中提取值。我需要使用更新查询。我要做的是什么,以及该方法的返回类型是什么。请任何人帮助我。提前谢谢。如果我这样使用,它会显示错误。。 Query query=JPA.em()。createNativeQuery(" update truck set flag = ' YES

  • 问题内容: 谁能帮助我了解为什么此更新查询未更新数据库中的字段?我在我的php页面中有这个来从数据库中检索当前值: 这是我的HTML表单: 这是我的“ editblogscript”: 我不明白为什么它不起作用。 问题答案: 您必须在查询中的所有VARCHAR内容周围加上单引号。因此,您的更新查询应为: 同样,用POST中的内容直接更新数据库是一种不好的形式。您应该使用mysql_real_esc

  • 问题内容: 谁能看到以下查询出了什么问题? 当我运行它时,我得到: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第8行的’a where a.CompetitionID = Competition.CompetitionID’附近使用 问题答案: 主要问题是内部查询不能与外部语句上的子句相关,因为在内部子查询执行之前,where过滤器首先应用于要

  • 问题内容: 在页面的页脚中,我想添加诸如“最后更新xx / xx / 200x”之类的内容,该日期为最后一次更新某些mySQL表的时间。 最好的方法是什么?有检索上次更新日期的功能吗?每次需要此值时都应该访问数据库吗? 问题答案: 在更高版本的MySQL中,您可以使用数据库来告诉您何时更新了另一个表: 当然,这确实意味着要打开与数据库的连接。 另一种选择是每当更新MySQL表时“触摸”特定文件: