Как я могу обновить временную метку таблицы MySQL из запроса JPA? - PullRequest
0 голосов
/ 02 июля 2018

Вот моя модель:

@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: выполнить (default-cli) для лицензии проекта: во время работы возникла исключительная ситуация. null: InvocationTargetException: ошибка создания бина с именем 'userController': Неудовлетворенная зависимость выражается через поле 'userService'; вложенное исключение org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'userService': Ошибка вызова метода init; Вложенным исключением является java.lang.IllegalArgumentException: Ошибка проверки запроса для метода public abstract void com.example.licenta.service.UserService.update (java.lang.String)! org.hibernate.hql.internal.ast.QuerySyntaxException: пользователь не сопоставлен [UPDATE User u SET u.created = '0000-00-00 00:00:00' WHERE u.username =: имя пользователя]

1 Ответ

0 голосов
/ 02 июля 2018

Фактическая проблема заключается в том, что 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 ")

Подробнее см. в этом вопросе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...