Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 怎么看什么戏!认为数据库架构是_Hibernate_Jpa_Playframework - Fatal编程技术网

Hibernate 怎么看什么戏!认为数据库架构是

Hibernate 怎么看什么戏!认为数据库架构是,hibernate,jpa,playframework,Hibernate,Jpa,Playframework,我在写剧本!框架后端。我开始设置jpa.ddl=update。然而,正如大家建议的那样,我在准备生产时将此更改为jpa.ddl=none 从那以后,我的理解是,我必须通过使用数据库进化来跟踪数据库模式。到目前为止,我做得还不错,但现在我正在修改我的模型,我发现JPA正在执行SQL查询,假设存在某些我没有手动创建的表 我无法想象正确的做法是运行我的代码,收到如下错误: ERROR: relation "games_users" does not exist 然后编写将创建该表的演化脚本。那么,有

我在写剧本!框架后端。我开始设置
jpa.ddl=update
。然而,正如大家建议的那样,我在准备生产时将此更改为
jpa.ddl=none

从那以后,我的理解是,我必须通过使用数据库进化来跟踪数据库模式。到目前为止,我做得还不错,但现在我正在修改我的模型,我发现JPA正在执行SQL查询,假设存在某些我没有手动创建的表

我无法想象正确的做法是运行我的代码,收到如下错误:

ERROR: relation "games_users" does not exist

然后编写将创建该表的演化脚本。那么,有没有一种方法可以看出JPA/Play认为当前模式应该基于我的模型,这样我就可以创建它,或者有更好的方法可以做到这一点呢?

一个解决方案是,在开发过程中使用
JPA.ddl=update
,然后不断修改JPA模型。不建议在生产中让JPA更新您的模型,但您可以在开发中使用它。当您的软件稳定,并且不再需要修改JPA实体时,您可以从自动生成的模式切换到固定模式

另一个解决方案是在另一个数据库名称上开发,然后在两个数据库之间进行区分,生成
sql
脚本


一个更无聊的解决方案是手动保留
SQL
evolution脚本,每次修改JPA实体时都编写一个脚本。

一个解决方案可以是,在开发过程中使用
JPA.ddl=update
,并不断修改JPA模型。不建议在生产中让JPA更新您的模型,但您可以在开发中使用它。当您的软件稳定,并且不再需要修改JPA实体时,您可以从自动生成的模式切换到固定模式

另一个解决方案是在另一个数据库名称上开发,然后在两个数据库之间进行区分,生成
sql
脚本


一个更无聊的解决方案是手动保留
SQL
evolution脚本,每次修改JPA实体时都编写一个脚本。

这是一个解决方案,但如果这是“正确”的解决方案,那么这似乎是使用play的一个缺点。如果我错了,请纠正我,但使用Hibernate/JPA从SQL中抽象出来的目的不是吗?这是一个解决方案,但如果这是“正确”的解决方案,那么使用play似乎是一个缺点。如果我错了,请纠正我,但使用Hibernate/JPA从SQL中抽象出来的意义不就在于此吗?