Grails

时间:2017-02-13 05:33:28

标签: hibernate grails spring-security

我无法将任何数据插入到我的DbUser.groovy域类中。当Iam调用以下方法时。



	def insertDbuserDetails(Map Hmap){
		try{
			def emp = Employee.get(Hmap.get("empId"))
			if(emp){
			def Username = springSecurityService.getPrincipal().getUsername()
			def row = DbUser.findByEmployee(emp)
			if(!row){
			def data = new DbUser(employee:emp,username:Hmap.get("userName"),password:Hmap.get("password"),client:Hmap.get("client"),create_id:Username,create_dt:new Date(),mod_id:null,mod_dt:null)
			data.save(failOnError: true)
			return data
			}else{
			return "exist"
			}
		  }else{
		  return "invalid"
		  }
		}
			catch(Exception e){
			println("Exception in getDbuserDetails() of DbuserService.groovy: "+e);
			}
		}




它给我一个像

这样的错误
  

错误|   2017-02-10 18:44:08,307 [http-bio-8080-exec-4] ERROR spi.SqlExceptionHelper - Field' employee'没有默认值   DbuserService.groovy的getDbuserDetails()中的异常:org.springframework.dao.DataIntegrityViolationException:Hibernate操作:无法执行语句; SQL [不适用]; Field'员工'没有默认值;嵌套异常是java.sql.SQLException:Field' employee'没有默认值

     

错误|   2017-02-10 18:44:08,328 [http-bio-8080-exec-4]错误hibernate.AssertionFailure - HHH000099:发生断言失败(这可能表示Hibernate中存在错误,但更可能是由于不安全使用会话):org.hibernate.AssertionFailure:com.domain.gcg.DbUser条目中的null id(发生异常后不要刷新会话)

     

错误|   2017-02-10 18:44:08,469 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver - 处理请求时发生AssertionFailure:[POST] / UserManagement / dbuser / addDbuserDetails - 参数:   Repassword:pass123   客户端:testclient   密码:pass123   emp:SE357   empName:Abhilash Shajan   用户名:Abhi123   com.domain.gcg.DbUser条目中的null id(在发生异常后不要刷新会话)。 Stacktrace如下:   消息:com.domain.gcg.DbUser条目中的null id(在发生异常后不刷新会话)

这是我的DbUser.groovy域类



class DbUser {
		
	Employee employee
	String client
	String username
	String password
	String create_id
	Date create_dt
	String mod_id
	Date mod_dt
	
	static mapping = {
		version true
		dynamicUpdate true
		password type: GormEncryptedStringType
                employee column: '`employee`',generator: 'foreign', params: [ property: 'employee'], insertable: false, updateable: false
   }

	static constraints = {
		mod_id(nullable: true)
		mod_dt(nullable: true)
	}




有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

检查您的映射,您在employee字段上有insertable和updateable = false,并且您正在尝试更新此字段。