我正在玩2.1的第一步,所以我在playframework網站上做了JavaTodoList教程。一切按預期工作。獲取休眠空間並在運行框架中運行
接下來我更改了todolist以使用運行在我的開發箱上的postgresql數據庫。我所要做的就是在application.conf`
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/todo"
db.default.user=todo
db.default.password=secretpassword
更改一些設置,我刷新頁面,做數據庫的演變,並再次一切工作就好了。
現在我想玩hibernate-spatial來將位置座標存儲到每個todolist項目(實際上可能是任何其他基於位置的項目)。
我加了一些libraris到應用程序/ lib目錄下,即:
- 休眠公地的註解 - 4.0.1.Final.jar
- 休眠核心,4.1.9.Final.jar
- 休眠空間-4.0-M1.jar
- JDBC-stdext-2.0.jar
- JTS-1.12.jar
- PostGIS的-JDBC-1.5.3.jar
- PostgreSQL相關8.4-701.jdbc4.jar
我用同樣的庫上的經典GlassFish的Java應用程序存儲空間的功能,所以將它們組合在一起。另外,postgresql數據庫在空間上使用postgis啓用,之前使用經典的java應用程序進行了測試。
我推廣的我的模型類待辦事項任務如下:
package models;
import java.util.*;
import play.db.ebean.*;
import play.data.validation.Constraints.*;
import javax.persistence.*;
import com.vividsolutions.jts.geom.Point;
import org.hibernate.annotations.Type;
@Entity
public class Task extends Model {
@Id
public Long id;
@Required
public String label;
@Type(type="org.hibernate.spatial.GeometryType")
@Column(columnDefinition="Point")
public Point location;
public static Finder<Long,Task> find = new Finder(Long.class, Task.class);
public static List<Task> all() {
return find.all();
}
public static void create(Task task) {
task.save();
}
public static void delete(Long id) {
find.ref(id).delete();
}
}
我也加入了PostGIS JPA方言我的conf文件:
jpa.dialect=org.hibernate.spatial.dialect.postgis.PostgisDialect
播放編譯一切都很好,那裏有一些錯誤,當在類路徑中缺少庫時,但我添加了上面列出的另一個,直到沒有錯誤再出現。儘管如此,沒有觸發新位置字段的數據庫演變。這似乎是玩忽略了我的應用程序的所有休眠空間特定部分。它的工作方式與之前的普通todolist應用程序相同。我認爲它與不同的休眠版本有關(是使用hibernate3還是hibernate4?我可以升級到4嗎?)。有人可以告訴我他使用的每個庫的哪些版本以及必須完成哪些配置設置?
更新:正如克里斯托弗提到的,我混淆了ebean和jpa。於是我拿出了jpa-sample,並將其轉移到我的簡單todolist樣本上。我更新了播放項目文件和依賴項,重新佈線的模型和控制器以適應JPA EntityManager,並從類路徑中刪除了一些庫,以便使用播放2.1中的hibernate 3。我也做了配置,就像在jpa示例中一樣,我的persistence.xml和application.conf幾乎看起來像一樣,除了我使用postgres方言進行休眠。我可以編譯我的項目,但是當我啓動它,我得到
的PersistenceException:[PersistenceUnit:defaultPersistenceUnit]無法配置的EntityManagerFactory
我配置了該劇的冗長調試,所以我發現,那這個異常在PropertyBinder構建我的Task Entity的id屬性後出現。
想我進一步出現一些步驟,但在看不到盡頭......
從您在克里斯托弗的回答提出的意見,我可以看到你現在完全想通了。你可以在新的答案中分享你的模板(或者至少是重要的配置部分)嗎? – nietaki 2013-05-08 11:28:54
我現在還在搞亂一個問題。建模我的實體和數據庫的演變過程非常瞭解,但問題是,幾何對象不會持久保存到數據庫(幾何列是空的)。因爲我沒有時間,我還沒有調試,但我認爲它只是一個小錯誤。當我解決這個問題時,我會將模板放在github上作爲JPA空間示例。 – 2013-05-09 09:16:04