GORM - 读取和写入 from/into 个单独的表

GORM - read and write from/into separate tables

我正在开发一个允许用户修改数据库中某些数据的 Web 应用程序。用户指定搜索条件(例如姓名或姓氏),然后应用程序根据给定条件搜索数据,将其显示在 UI 上,用户编辑数据并按下 'Save' 按钮。

目前所有编辑都会影响同一个 table (person)。但我需要更改应用程序的逻辑:read 操作 (SELECT) 应该应用于一个 table (person)。所有 write 操作(INSERT、UPDATE 等)都应应用于另一个 table (person_changes)。是否可以通过映射或调整另一个纯 GORM 设置来实现这种行为?或者我需要为每个 SELECT、INSERT、UPDATE 开发 HQL 查询?

现在我的域 class 看起来像这样:

class Person implements Serializable {
    private static final long serialVersionUID = -6023326467985259987L;

    String id
    String name
    String surname

    static mapping = {
        datasource 'stuff'
        table 'person'
        cache true
        version false
        id column: 'id', generator: 'assigned'
    }

    static constraints = {
        id(bindable: true, nullable: false, blank: false)
    }
}

我使用 Grails 2.3.11Hibernate 3.6.10.19.

Is it possible to achieve such behavior via mapping or tuning another pure GORM settings?

没有

Or I need to develop HQL query for each SELECT, INSERT, UPDATE?

HQL 帮不了你。 Hibernate(以及 GORM)从根本上假设持久化 class 总是从相同的 table

读取和写入

老实说,这个要求听起来很奇怪,如果您写入的 table 与您正在读取的不同,您将如何实际读取任何内容?