2009-06-16 114 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