#java #sql #spring-boot #hibernate #jpa
#java #sql #spring-boot #переход в спящий режим #jpa
Вопрос:
У меня есть репозиторий JPA для объекта DB следующим образом:
@Repository
public interface StudentRepository
extends JpaRepository<Student, String> {
}
Student
сущность выглядит следующим образом:
@Entity
@Table(name = "student")
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "custom-uuid")
@GenericGenerator(name = "custom-uuid",
strategy = "generator.CustomUUIDGenerator")
private String id;
@Column(name = "roll_number")
private String rollNumber;
@Column(name = "name")
private String name;
@LastModifiedDate
@Column(name = "last_modified_date")
@JsonIgnore
private Instant lastModifiedDate = Instant.now();
Теперь я хотел бы написать следующий SQL-запрос с использованием JPA следующим образом:
SELECT id, roll_number from student where id=<id> order by last_modified_date desc;
Будучи новичком в JPA / Hibernate, я понятия не имею, как добиться этого с помощью JPA / Hibernate.
Может ли кто-нибудь, пожалуйста, помочь здесь?
Ответ №1:
Вы могли бы написать что-то вроде:
String hql = "SELECT s.id, s.rollNumber FROM Student s WHERE s.id = :id ORDER BY s.lastModifiedDate DESC";
query.setParameter("id", 10);
Query query = session.createQuery(hql);
List results = query.list();
Ответ №2:
Создайте новый метод в репозитории
@Repository
public interface StudentRepository extends JpaRepository<Student, String> {
/**
* List all student by criterias.
*
* @return
*/
@Query(value = "SELECT id, roll_number from student where id=?1 order by last_modified_date desc;", nativeQuery = true)
List<Student> listStudent(String id);
}
Справочный документ: https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query