我正在开发一个应用程序,使用spring启动与休眠。实际上,我之前创建了一个使用spring mvc进行休眠的项目,但现在我开始使用spring引导。所以问题是我无法使用我在spring mvc中使用的hql查询获取数据。因为我不知道在spring引导项目中写入hql查询的位置。在春季启动时运行hql查询时没有得到任何结果
我试图创造一个类,扩展春季启动DAO接口和实现我的方法,但没有得到正确的数据。
这是我以前的春季mvc代码。
我创建了一个实体类Rating.java和DAO类。这里是我的Rating.java
@Entity
@Table(name = "rating")
public class Rating {
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name="author_id")
private long authId;
@Id
@Column(name="post_id")
private long postId;
@Column(name="rating_points")
private long points;
public Rating() { }
public Rating(long id) {
this.id = id;
}
public Rating(long authId, long postId, long points) {
this.authId = authId;
this.postId = postId;
this.points = points;
}
//Getters and setters
}
我的Spring MVC DAO类
@SuppressWarnings("unchecked")
public List<Rating> getRatingInfoById(long id) throws Exception {
session = sessionFactory.openSession();
String queryString = "select r.id from Rating r where r.postId=:id group by points";
Query query = session.createQuery(queryString);
query.setLong("id", id);
return query.list();
}
我的春天启动代码。
DAO接口
@Transactional
public interface MyDaoInterface extends CrudRepository<Rating, Long>{
public List<Rating> getRatingInfoById(long id) throws Exception;
}
我DAO课堂,我实现了DAO接口方法
public class MyDao implements MyDaoInterface{
@Autowired
SessionFactory sessionFactory;
Session session = null;
Transaction tx = null;
@SuppressWarnings("unchecked")
public List<Rating> getRatingInfoById(long id) throws Exception {
session = sessionFactory.openSession();
String queryString = "select r.id from Rating r where r.postId=:id group by points";
Query query = session.createQuery(queryString);
query.setLong("id", id);
return query.list();
}
}
打开调试日志的休眠,你正在尝试的任务,后调试日志。另外使用session = sessionFactory.getCurrentSessio();而不是openSession()。在您的MyDao类和您的控制器上显示注释,getRating的服务类。 –