这是我的模特:
@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应用程序时遇到的错误
无法执行目标
org.springframework.boot:spring-boot-maven-plugin:1.5.9.RELEASE:在项目licenta上运行(default-cli):运行时发生异常。 null:InvocationTargetException:创建名称为'userController'的bean时出错: 通过字段“ userService”表示不满意的依赖关系;嵌套异常为 org.springframework.beans.factory.BeanCreationException:创建名称为'userService'的bean时出错: 调用init方法失败;嵌套的异常是java.lang.IllegalArgumentException: 验证方法公共抽象无效查询无效com.example.licenta.service.UserService.update(java.lang.String)! org.hibernate.hql.internal.ast.QuerySyntaxException:用户未映射[更新用户u SET u.created ='0000-00-00 00:00:00'WHERE u.username =:user name]
答案 0 :(得分:0)
实际的问题似乎是JPA不知道User
实体:
org.hibernate.hql.internal.ast.QuerySyntaxException:用户未映射
在@Entity
批注中指定专用名称时,需要在此实体的所有JPA查询中使用该名称:
@Entity(name = "checkinusers")
该查询将需要为:
@Query("UPDATE checkinusers u SET u.created = '0000-00-00 00:00:00' WHERE u.username = :username ")
有关详细信息,请参见this question。