我創建了一個類似於本教程的webapp: https://spring.io/guides/tutorials/react-and-spring-data-rest/。春季自定義查詢JPA
我已經添加postgresql數據庫,一切工作正常。我有一個基本的查詢findByUsername(字符串名稱)在我的倉庫工作正常。我的問題是,我出於某種原因無法創建自定義查詢,例如
"SELECT CURRENT_TIMESTAMP"
。
可以說我做了一個測試,我只是想得到這個聲明的價值。並不能我的意思是我不知道:)
我的谷歌的結果如何建議我把它添加到我的班
@Autowired EntityManager entityManager;
,然後創建查詢上。但entityManager
永遠不會初始化,總是返回null。這是正確的方式,我只是失去了一些東西?還嘗試添加spring-boot-starter-jdbc
並使用JdbcTemplate,但也是null。
編輯
我的問題是春天的知識太少。
我有一個這樣的班級,並試圖在那裏使用Autowire。
public class Person {
@Autowire
MyRepo myRepo;
private String p;
public Person(String p) {
this.p = p;
}
正如我後面的理解,春季不接受這一點。我在一個RestController中用Person per = new Person("string");
叫出這個類。 我提出的解決方案是自動裝配MyRepo我RestController類和我的人contstructor這個樣子
public Person(String p, MyRepo myRepo) {
this.p = p;
this.myRepo = myRepo;
}
刪除在Person類的自動裝配。通過這種方式,我設法在Person類中初始化myRepo並在那裏使用它。這不是我的問題的最佳解決方案。
我的第二個問題。在我得到這個工作之後,我嘗試將EntityManager自動裝配到我的Person類中。剛用EntityManager取代了MyRepo,它也被初始化了。現在的問題是我的下一個代碼行Integer i = (Integer) em.createNativeQuery("select 1", Integer.class).getSingleResult();
。這裏我得到一個錯誤javax.persistence.PersistenceException:org.hibernate.MappingException:未知實體:java.lang.Integer。 本聲明的目的是對我的數據庫進行簡單的查詢,如果它響應。
爲什麼'h2'標籤? –
啊,忘了提及,也有h2依賴。不知道,如果這在這裏有關。 – JamesLinux
'@PersistenceContext EntityManager entityManager;'。 JPA是一個相當複雜的野獸。而Spring和Spring-data-JPA就是其中之一。在深入研究之前,您最好閱讀文檔。 –