Java 要检索MS SQL中的最新记录,我应该使用什么Hibernate查询?
假设我有一个Java 要检索MS SQL中的最新记录,我应该使用什么Hibernate查询?,java,sql-server,hibernate,Java,Sql Server,Hibernate,假设我有一个实体类,名为学生 @Data @Entity @Table(name = "dbo.students") public class Students implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private String studentId;
实体
类,名为学生
@Data
@Entity
@Table(name = "dbo.students")
public class Students implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private String studentId;
@Column(name = "name")
private String studentName;
@Column(name = "course")
private String studentCourse;
@Column(name = "date_admitted")
private String dateAdmitted;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++
id name course date_admitted
1 Pankesh EEE 2020-10-21 07:52:30.977
2 Pankesh IT 2020-11-03 11:53:20.976
3 Pankesh CE 2020-09-11 08:30:29.975
++++++++++++++++++++++++++++++++++++++++++++++++++++
还有一个名为students的mssql
表
@Data
@Entity
@Table(name = "dbo.students")
public class Students implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private String studentId;
@Column(name = "name")
private String studentName;
@Column(name = "course")
private String studentCourse;
@Column(name = "date_admitted")
private String dateAdmitted;
}
++++++++++++++++++++++++++++++++++++++++++++++++++++
id name course date_admitted
1 Pankesh EEE 2020-10-21 07:52:30.977
2 Pankesh IT 2020-11-03 11:53:20.976
3 Pankesh CE 2020-09-11 08:30:29.975
++++++++++++++++++++++++++++++++++++++++++++++++++++
我要检索的是最新的记录
2 Pankesh IT 2020-11-03 11:53:20.976
我的Hibernate
查询
session.createQuery("FROM Students WHERE name='"+studentName+"' ORDER BY date_admitted DESC")
对于这种情况,我应该提出什么Hibernate
查询
注意:我正在使用AnnotationMapping
方法映射到mssql
使用entityManager.createQuery(“来自学生,其中studentName=:name ORDER BY dateaccepted DESC”).setParameter(“name”,studentName.setMaxResults(1.getResultList()代码>最新记录的ID不应该是2吗(我想你把样本数据弄混了)?糟糕。打字错误dateaccepted
也不应该是字符串。考虑<代码> ZONDATDeTIME < /COD>或<代码> LoalDATeTime< /代码>,它将给我一个<代码>不能反序列化< /Cord>错误。我以前在Java中测试过这一点,当我把它作为String
时,我能够得到Hibernate
日志,但我的日志是session.createQuery(来自学生,其中name=''+studentName+“'orderbydate\u-DESC)
我试图在这里帮助您避免SQL注入。永远不要将值连接到查询。始终使用一个对您进行适当转义的参数。为什么这可能会导致SQL注入/破坏数据?从未听说过bobby表?不,我从没听说过SQL注入讽刺