QuerySyntaxException: User is not mapped

338
27 мая 2022, 23:50

Подскажите, пожалуйста, в чем может быть проблема. После запуска spring-boot приложения и попытки аутентификации, появляется exception:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped [from User u  where u.username = :username]
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: User is not mapped

Класс User:

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "users")
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(unique = true)
private String name;
private String username;
private String password;
@ManyToMany(fetch = FetchType.EAGER, targetEntity = Role.class, cascade=CascadeType.ALL)
@JoinTable(name = "users_role")
private Set<Role> roles = new HashSet<>();
public User() {
}
public User(int id, String name, String password, Set<Role> roles) {
    this.id = id;
    this.name = name;
    this.password = password;
    this.roles = roles;
}
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return roles;
}
@Override
public String getPassword() {
    return password;
}
@Override
public String getUsername() {
    return username;
}
@Override
public boolean isAccountNonExpired() {
    return true;
}
@Override
public boolean isAccountNonLocked() {
    return true;
}
@Override
public boolean isCredentialsNonExpired() {
    return true;
}
@Override
public boolean isEnabled() {
    return true;
}
public void setPassword(String password) {
    this.password = password;
}
public Set<Role> getRoles() {
    return roles;
}
public void setRoles(Set<Role> roles) {
    this.roles = roles;
}
public String getRolesToString(){
    StringBuilder sb = new StringBuilder();
    for (Role i : roles){
        sb.append(i.getRole() + " ");
    }
    return String.valueOf(sb);
}
}

Класс UserDetailsServiceImpl

package crud.serivce;
import crud.model.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@PersistenceContext
EntityManager entityManager;
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
    return entityManager.createQuery("from User u  where u.username = :username", User.class)
            .setParameter("username", s).getSingleResult();
}
}

pom.xml

 <dependencies>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.4.RELEASE</version>
  <type>pom</type>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <version>2.3.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-security</artifactId>
  <version>2.3.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
  <version>2.3.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
  <version>2.3.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.21</version>
</dependency>
Answer 1

getSingleResult() дает такую ошибку, когда запрос возвращает ноль строк.

READ ALSO
Fatal Exception: java.lang.NoSuchMethodError

Fatal Exception: java.lang.NoSuchMethodError

Всем добрый вечер, в процессе проекта у меня возникла потребность работать с архивами через ZipFile Вообщем, суть проблемы заключается в том,что...

142
Чисты код и архитектура

Чисты код и архитектура

задумался сделать большой проект для резюмеСам проект это приложение для контроля рабочих:

114
Как вывести всю страницу одним print?

Как вывести всю страницу одним print?

Пробовал сделать страницу с помощью pythonНашёл как сделать это множеством принтов и захотел попробовать все их объединить в один

224