2012-05-24 37 views
4

我和播放工作! 1.2.4我遇到了一个奇怪的问题。游戏框架 - 数据库中创建拖放问题

据我所知,如果我设置在我的配置jpa.ddl创建,删除它应该将我的表格和重建,并重新启动应用程序。

jpa.ddl=create-drop 

我是否认为它只会删除并创建与已更改的模型相关联的表?我遇到了一个模型发生了变化的问题,但它并未丢失表格。我试图手动删除表,但它不会允许它,因为它Cannot delete or update a parent row: a foreign key constraint fails。我理解这个问题,并解决它我可以手动删除我的整个表,并重新启动我的应用程序,所以它从头开始建立表。

我的问题是,这是这个剧本的问题!这就是为什么它没有更新该表,如果有的话,是否有办法通过配置文件绕过它而不是手动删除我的表?

谢谢。

编辑

只是一些更多的信息,我只是假设这是一个问题,它可能是完全不同的东西,但这里是我在我的日志中获取:

Unsuccessful: create table Product 
Table 'Product' already exists 

我也只是在这个负载上实现了一个变化。我曾经有这样的关系

Product *-* Image 

这是产品和图像表之间的ManyToMany关系。 Image表现在不存在,关系将消失。然而,它在我看来像Image表没有被删除,但产品正试图删除和重建。这可能会导致外键约束问题。如果模型不存在,为什么不玩删除该表?

回答

0

乳宁在开发模式播放? 但为什么不使用jpa.ddl = update?使用JPA

0

自动模式修改是不是真的做的最好的方式。 Play提供了更可靠的演变机制,因为您指出了哪些变化。

在你给的例子,如果你删除一个模型类,如图片,JPA不知道Image类什么了,所以它不会删除图像表和Product_Image relationshop表。因此它不能删除产品表。在更改模型之前,JPA对数据库的内容不了解。

在开始时使用演化有点繁琐,因为您手动创建演化文件,但通过这种机制,您的数据库结构正是您想要的