grails - GORM组合保存错误,找不到与以下对象匹配的构造函数:java.lang.String(java.lang.Long)

标签 grails groovy gorm composition

我正在尝试保存具有学生ID的预订,学生将在其中扩展用户。

保存时,出现“找不到java.lang.String(java.lang.Long)的匹配构造函数错误”。

据我所知,它试图发送的Long是来自Student对象的唯一ID。我找不到解决方法,这是我的代码。

 class User {
   static hasMany = [reservations:Reservation, students:Student, faculty:Faculty]

   String username
   String password
   String firstName
   String lastName
   String phoneNumber
   String emailAddress
   boolean enabled
   boolean accountExpired
   boolean accountLocked
   boolean passwordExpired



 class Student extends User{
     static belongsTo = [users:User]
     static hasMany = [reservations:Reservation]

     String studentId

 class Reservation {    
     def securityService
     Student student
     String reservationId
     String lastUpdated
     String lastUpdatedBy
     String startDate
     String endDate

当我使用Reservation1.save()时出现错误:
Message: Could not find matching constructor for: java.lang.String(java.lang.Long)

这是我要保存的数据
//UserData
def user1 = Student.findByUsername('bobby') ?: new Student(username: 'bobby',
    enabled: true, password: 'pass', firstName: 'robert', lastName:'plant',
    metroStateStudentId: '012345670', phoneNumber: '0123456789',

//Reservation Data
def reservation1 = Reservation.findByReservationId('123456') ?: new   Reservation(reservationId:'123456',
    student: user1,startDate:'2013-07-23', endDate:'2013-07-27',lastUpdatedBy:'bobby')
    reservation1.save(flush: true, failOnError: true)

最佳答案

不确定上面的示例代码的完整性如何,但是我看到了一些可能会或可能不会导致您看到的异常的事情。

  • def securityService(在保留中)应该是 transient 的,因此gorm不会尝试持久。顺便说一句-您的意思是springSecurityService
  • 更新:只是意识到您已经将它们声明为字符串,所以我认为您不能像这样直接设置日期,您需要解析字符串
    例如Date().parse("yyyy-MM-dd", '2013-07-23'))
  • (如果您使用的是GORM autoTimestamp),则lastUpdated字段应为日期而不是字符串-否则,如果您不使用它,则应禁用它
  • 最后,预订是否映射到旧数据库-是否有理由让GORM提供String reservationId和默认ID?
  • 关于grails - GORM组合保存错误,找不到与以下对象匹配的构造函数:java.lang.String(java.lang.Long),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17796246/

    相关文章:

    grails - 全局@Resource格式优先级

    grails - 如何在jar包中激活域类?

    unit-testing - 如何在Grails单元测试中获取抽象域类的实例?

    grails - grails gorm级联保存最佳实践

    groovy - JMeter 脚本 - 根据条件停止所有线程组(整个测试)

    grails - 是否可以禁用grails插件的BootStrap?

    grails - 使用 elasticsearch 0.19.8 在 EC2 中发起 war 时出现奇怪的结果

    grails - 按特定属性值对 hql 结果进行排序

    java - Groovy 不喜欢 Reflections 构造函数采用 null 参数

    grails - Groovy/Grails : How do I make my datePicker blank or null by default instead of showing today's date?