【发布时间】:2016-06-16 10:22:17
【问题描述】:
我正在开发一个允许用户修改数据库中的某些数据的 Web 应用程序。用户指定搜索条件(例如姓名或姓氏),然后应用程序根据给定条件搜索数据,将其显示在 UI 上,用户编辑数据并按下“保存”按钮。
目前所有编辑都会影响同一张表 (person)。但我需要更改应用程序的逻辑:read 操作 (SELECT) 应该适用于一个表 (person)。所有write 操作(INSERT、UPDATE 等)都应应用于另一个表 (person_changes)。是否可以通过映射或调整另一个纯 GORM 设置来实现这种行为?或者我需要为每个 SELECT、INSERT、UPDATE 开发 HQL 查询?
现在我的域类看起来像这样:
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.11 和 Hibernate 3.6.10.19。
【问题讨论】:
-
查看数据源 ['stuff', 'main'] 两个 DSN,然后也许您可以将 Person 类扩展为 PersonEdit 类,然后将此“stuff”的数据源设为您要写入的数据源。然后,您将自动获得 2 个数据库,其中 1 个包含真实数据,另一个包含真实数据 + 更新。然后,您可以比较或与两个数据库进行比较。实际上听起来你只需要在历史表中保留表更改的历史以供参考,而不是所有这些疯狂
标签: database hibernate grails grails-orm