gpt4 book ai didi

grails - Grails-条件映射

转载 作者:行者123 更新时间:2023-12-02 14:46:18 25 4
gpt4 key购买 nike

目前,我正在开发一个使用Oracle作为数据库的webapp。我已经得知我的Web应用程序也必须在Sybase ASE上工作。我的Oracle数据库使用序列来生成ID,并且我映射了域类以使用这些序列。据我所知,Sybase ASE没有序列,但是有身份。这是我的问题。与Oracle和Sybase一起使用的代码/配置如何处理。每个域的ID都有一些“条件映射”。

我只是不想在每次为非已映射的其他数据库构建webapp时都在映射中注释/取消注释行。 有人知道该怎么做吗?

还有另一个危险:Oracle和Sybase之间的另一个区别对映射有影响(我不使用dbCreate = "create"生成数据库结构)。在这一点上我什么都没看到。 有经验吗?

编辑:
事实证明,不可能为两个数据库都建立一个映射。我的Oracle结构在列和表名中使用引号。 Sybase ASE中不允许使用引号。我的(不太好看,很漂亮)的解决方案是在某些特定平台上构建webapp时更改(注释/取消注释)映射。

顺便说一句,我是Grails的忠实拥护者,这种映射方式似乎是一个缺点。如果我使用的是“纯” Hibernate,我将在xml文件中有两个映射,然后根据基础数据库进行更改。但是Grails并没有给我提供两个映射的可能性。

最佳答案

我不知道grails是否使您能够配置用于id生成的条件映射,但是我认为也许您既不需要使用序列或身份,也不需要使用其他休眠id生成器策略:http://grails.org/doc/1.3.7/ref/Database%20Mapping/id.html

编辑:

查阅休眠文档,我发现根据http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/mapping.html#mapping-declaration-id的数据库容量,可以使用序列或标识:

All generators implement the interface org.hibernate.id.IdentifierGenerator. This is a very simple interface. Some applications can choose to provide their own specialized implementations, however, Hibernate provides a range of built-in implementations. The shortcut names for the built-in generators are as follows:

...

native:

selects identity, sequence or hilo depending upon the capabilities of the underlying database.



因此,您可能需要这样的配置:
static mapping = {
id generator:'native'
}

关于grails - Grails-条件映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com