gorm - 无法将对象保存到数据库

时间:2015-03-23 18:46:18

标签: grails gorm

我有一个Audit表,主键作为列REQUEST_ID, AUDIT_TIMESTAMP的复合键。

我编写了我的域类,如下所示

@EqualsAndHashCode
class Audit implements Serializable {

    Integer     requestId
    Timestamp   timestamp

    boolean equals(other) {
        if (!(other instanceof Audit)) {
            return false
        }

        other.requestId == requestId && other.timestamp == timestamp
    }

    int hashCode() {
        def builder = new HashCodeBuilder()
        builder.append requestId
        builder.append timestamp
        builder.toHashCode()
    }

    static constraints = {
        requestId       size: 19
    }

    static mapping = {

        table           'AUDIT'
        version         false
        id              composite: ['requestId', 'timestamp']
        requestId       column: 'REQUEST_ID', index: 'AUDIT_IDX'
        timestamp       column: 'AUDIT_TIMESTAMP'

    }}


我的测试课如下:

class AuditIntegrationSpec extends Specification {

    Audit auditLog;

    def setup() {
        auditLog = new Audit()
        auditLog.setRequestId(12)
        auditLog.setTimestamp(new Timestamp(new Date().getTime()))

    }

    void "test something"() {
        when : {
            auditLog.save(flush: true)
        }

   }
}

不确定为什么我的对象没有持久化到数据库。我没有在日志中看到任何错误或异常。测试顺利通过。不确定是什么问题。

1 个答案:

答案 0 :(得分:0)

使用failOnError: true后,我发现问题不在于复合键。其他一些专栏导致了这个问题。固定。我必须使用@EqualsAndHashCode并且dint必须实施equalshashcode方法。