如何使用一个序列自动增加squeryl中的几个表(PostgreSQL)?

时间:2014-03-23 12:57:48

标签: postgresql scala orm squeryl

我已经关注

val s1 = autoIncremented("advert_id_seq")
on(car)(attributes => declare(attributes.id is (s1)))
on(danceInstructor)(attributes => declare(attributes.id is (s1)))

当我运行我的应用程序时,捕获异常

org.postgresql.util.PSQLException: ERROR: relation "advert_id_seq" already exists

正如我意识到的那样,squeryl尝试两次创建序列并获得错误

2 个答案:

答案 0 :(得分:1)

我猜测你的问题是关于Schema的生成,而不是查询数据库。如果是这种情况,那么您可能只是想避免让Squeryl直接创建表格。 Squeryl的模式生成是有目的的基础。如果你能够做到这一点,我认为你最好采用一些方法来提供更好的控制,而不是“阅读你的模型并生成东西”。工具可以提供。像FlywayLiquibase这样的工具对此很有用。

如果您不想采用新库,您也可以使用Squeryl通过其中一个Schema.printDdl方法将模式输出到文件,然后在执行之前删除无关的序列。

答案 1 :(得分:0)

Ruby on Rails具有多态关联,但scala活动记录没有。我做了类似的东西,然后将它推送到github repo。