我使用这些技术创建了一个简单的应用程序grails,netbeans和mysql。

而且我总是收到此错误消息:



我有点理解这意味着什么,所以我将重点放在id生成器键上。

这是我的利润。

package samplegrailsapp

import java.text.DateFormat
import java.text.SimpleDateFormat
import org.grails.databinding.BindingFormat
class DailyProfit {
    @BindingFormat('yyyy-MM-dd')
    Date date;
    double profit;
    static constraints = {

        })
    }

    static mapping = {
        version false
        id generator:'assigned', name:'date'
    }
}

日期变量是我表中的主键。因此,根据我的理解,我需要指定将用作主键的列名称。问题是我仍然遇到相同的错误。我还有什么想念的,所以我可以使它起作用吗?

最佳答案

我遵循corky_bantam,使用日期作为PK很奇怪。

但是,如果是这种情况,则需要在创建Profit对象时确保设置日期
您可以尝试使用beforeInsert:

软件包samplegrailsapp

import java.text.DateFormat
import java.text.SimpleDateFormat
import org.grails.databinding.BindingFormat
class DailyProfit {
    @BindingFormat('yyyy-MM-dd')
    Date date = new Date();
    double profit;
    static constraints = {

        })
    }

    static mapping = {
        version false
        id generator:'assigned', name:'date'
    }

   def beforeInsert() {
      if (date == null) {
         date = new Date()
      }
   }

}

09-10 08:09
查看更多