我正在開發一個應用程序,使用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的服務類。 –