Могу ли я написать свои собственные запросы в загрузочном веб-приложении Spring? - PullRequest
0 голосов
/ 10 апреля 2019

Я делаю свое первое Springboot веб-приложение и пытаюсь отобразить некоторую информацию с сервера postgresql.При попытке получить некоторую информацию из базы данных она возвращает пустой список.По тому, что я вижу в консоли, он пытается выполнить запрос с неправильными параметрами.

В моей БД у меня есть таблица с тремя полями: «userId», «firstName» и «surName».Из того, что я могу понять, Hibernate пытается выполнить запрос с параметрами "users0_.user_id", "users0_user_id", "users0_.sur_name".

Чтобы исправить это, я хочу написать свои собственные запросы или исправить текущий.,Как мне это сделать?

Как видите, я проверил результаты запроса с помощью некоторых операторов System.Out.print.

Первый из них возвратил list.size () из0, а второе вернуло значение NULL.

Консоль, отображающая, как мне кажется, информацию запроса

Это функция в моем классе UserController, используемая для отображенияинформация о пользователях.

    @RequestMapping("/users")
    public String getUsers(Model model) {
        List <users>users = (List<users>) userServ.listAll();
        System.out.print("THE SIZE WITH STRING CONCATINATION IS: " + users.size());
        model.addAttribute("users", users);
        System.out.print("THE NAME OF USER WITH INDEX =2 IS: " + userServ.getById(2).getFirstName());

        return "showUsers";
    }

Сущность / доменный класс для пользователя:

@Entity
@Table(name="users")
public class users implements Serializable{


    @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
    private long userId;
    private String firstName;
    private String surName;

    private long getId() { return userId; }
    public void setId(long id) {this.userId = id;}
    public String getFirstName() { return firstName; }
    public String getSurName() { return surName; }
    public void setSurname(String surName) {this.surName = surName; }


}

Это интерфейс хранилища, используемый для извлечения пользователей из БД:

import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.CrudRepository;

import com.svein.models.users;

public interface UserRepository extends CrudRepository<users, Long> {

}

Это класс обслуживания для пользователей:



@Service
public class UserServiceImp implements userService{

    @Autowired
    private UserRepository userRepo;

    @Override
    public List<users> listAll() {
        List<users> users = new ArrayList<>();
        userRepo.findAll().forEach(users::add);
        return users;
    }

    @Override
    public users getById(long id) {
        return userRepo.findById(id).orElseGet(users::new);
    }

    @Override
    public users saveOrUpdate(users user) {
        userRepo.save(user);
        return null;
    }

    @Override
    public void delete(Long id) {
        userRepo.deleteById(id);

    }


}

Я надеялся изменить или заменить текущий запрос, но, возможно, что-то не так с кодом.Как я уже сказал, я довольно новичок в этом, но подумал, что это странно, что я не написал ни одной строки SQL, а в другом проекте, который показал признаки получения нужной информации (из другой БД).Как класс узнает, что запрашивать?

1 Ответ

0 голосов
/ 10 апреля 2019

Вам нужно добавить аннотацию @Query поверх функции запроса, которую вы хотите написать в своем классе UserRepository.Например,

import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.repository.CrudRepository;
import com.svein.models.users;

public interface UserRepository extends CrudRepository<users, Long> {

    @Query("Select * from users")
    List<users> findAllUsers();

}

В качестве альтернативы в вашем UserServiceImpl должен работать userRepo.findAll (). Вам не нужно циклически проходить через каждого пользователя и возвращать его в список.Вы должны просто вернуть userRepo.findAll ().

Следующий URL поможет вам лучше понять, как написать собственный запрос.

https://www.baeldung.com/spring-data-jpa-query

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