2009-06-16 146 views
0

我正嘗試在Grails中使用現有的數據庫。我DataSource.groovy的啓動與此:忽略@Id註釋的Grails

import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsAnnotationConfiguration 
dataSource { 
    configClass = GrailsAnnotationConfiguration.class 
    pooled = true 
    driverClassName = "com.mysql.jdbc.Driver" 
    username = "root" 
    password = "12345" 

} 

我有我的類註解如下:

@Entity 
@Table(name = "regexpression", catalog = "tigger") 
@SuppressWarnings("serial") 
public class Regexpression implements Serializable { 

    /** 
    * Attribute regexpId. 
    */ 
    private Integer regexpId; 

    . . . 

    /** 
    * <p> 
    * </p> 
    * @return regexpId 
    */ 
    @Basic 
    @Id 
    @GeneratedValue 
    @Column(name = "regexp_id") 
     public Integer getRegexpId() { 
     return regexpId; 
    } 
     . . . 

當我運行生成的代碼中,我得到以下錯誤:

org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [regexpressionInstance.id] on line [40]: groovy.lang.MissingPropertyException: No such property: id for class: org.maflt.flashlit.pojo.Regexpression 

所以看起來Grails忽略了regexp_id上的@Id註解。 是那個核心?

我打算更改數據庫以使用id而不是regexp_id。但我不應該也有。

任何想法?

謝謝!

+0

我將主鍵更改爲id,重新創建了pojo,重新生成了grails應用程序,現在它可以工作。但我不喜歡把每個關鍵字段都稱爲id的想法。另外我已經下降並創建了所有我的外鍵約束。所以我仍然希望有一個解決方案。 – 2009-06-16 22:08:23

回答

0

嗯,你可能已經得到了Integer字段ID的命名,然後只需將@Column註釋指向表中regexp_id列的那個屬性即可。

+0

我敢打賭,你是對的。我希望對它進行測試,但事實證明,我已經走得太遠,無法回到這一點。 謝謝! – 2009-06-18 15:45:51