Grails 中没有默认值异常
Posted
技术标签:
【中文标题】Grails 中没有默认值异常【英文标题】:Does not have default value exception in Grails 【发布时间】:2017-07-01 00:53:13 【问题描述】:我无法向我的 DbUser.groovy 域类插入任何数据。当我调用以下方法时。
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] 错误 spi.SqlExceptionHelper - 字段“员工”没有默认值 DbuserService.groovy 的 getDbuserDetails() 中的异常:org.springframework.dao.DataIntegrityViolationException:休眠操作:无法执行语句; SQL [不适用];字段“员工”没有默认值;嵌套异常是 java.sql.SQLException: Field 'employee' doesn't have a default value
错误 | 2017-02-10 18:44:08,328 [http-bio-8080-exec-4] ERROR hibernate.AssertionFailure - HHH000099:发生断言失败(这可能表明 Hibernate 中存在错误,但更有可能是由于不安全使用会话):org.hibernate.AssertionFailure: com.domain.gcg.DbUser 条目中的空 id(发生异常后不要刷新会话)
错误 | 2017-02-10 18:44:08,469 [http-bio-8080-exec-4] 错误错误。GrailsExceptionResolver - 处理请求时发生 AssertionFailure:[POST] /UserManagement/dbuser/addDbuserDetails - 参数: 重新密码:pass123 客户端:testclient 密码:pass123 雇员编号:SE357 empName: Abhilash Shajan 用户名:Abhi123 com.domain.gcg.DbUser 条目中的空 id(发生异常后不要刷新会话)。堆栈跟踪如下: 消息:com.domain.gcg.DbUser 条目中的空 id(发生异常后不要刷新 Session)
这是我的 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)
有人可以帮我吗?
【问题讨论】:
这个问题和以前一样。您是否按照我的建议尝试重新创建数据库? (只需删除所有表并重新运行 grails 应用程序并让它再次创建表。 @MikelisBaltruks 我删除了我的数据库并创建了一个新数据库,但问题仍然存在。 :-( 【参考方案1】:检查您的映射,您在员工字段上有 insertable 和 updateable = false 并且您正在尝试更新此字段。
【讨论】:
这是我的问题!很好的答案。以上是关于Grails 中没有默认值异常的主要内容,如果未能解决你的问题,请参考以下文章