Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Not A Bug
-
Affects Version/s: 1.1
-
Fix Version/s: 1.1.2
-
Component/s: Persistence
-
Labels:None
-
Environment:grails-1.1.0
ms-sql-server
Description
the mapping for a legacy-table:
class JobJournal {
String name
Date startTime
Date endTime
JobStatus status
String details
String createdBy = 'xxx'
String updatedBy = 'xxx'
Date dateCreated
Date lastUpdated
static constraints = {
name(blank: false, nullable: false)
startTime(nullable: false)
endTime(nullable: true)
status(nullable: false)
details(blank: false, nullable: true)
createdBy(display: false, nullable: true)
updatedBy(display: false, nullable: true)
dateCreated(display: false, nullable: true)
lastUpdated(display: false, nullable: true)
}
static mapping = {
table 'tjobjournal'
columns {
id column: 'oid', sqlType: 'integer'
name column: 'name', sqlType: 'char', length: 50
startTime column: 'starttime', sqlType: 'datetime'
endTime column: 'endtime', sqlType: 'datetime'
status column: 'status', sqlType: 'varchar', length: 8
details column: 'details'/*, sqlType: 'text'*/
createdBy column: 'opin', sqlType: 'char', length: 3
updatedBy column: 'opia', sqlType: 'char', length: 3
dateCreated column: 'stdn', sqlType: 'datetime'
lastUpdated column: 'stda', sqlType: 'datetime'
version column: 'oca', sqlType: 'integer'
}
}
String toString() {
return name
}
}
produces the following ddl (dbCreate = "create-drop"):
create table tjobjournal ( oid integer identity not null, name char not null, starttime datetime not null, endtime datetime null, status varchar(255) not null, details varchar(255) null, opin char null, opia char null stdn datetime null, stda datetime null, oca integer not null, primary key (oid));
the length mapping-constraint is not respected
by the ddl-generation. this produces data-truncation
exceptions at least on sql-server-databases.
this is also an example for http://jira.codehaus.org/browse/GRAILS-4196
because JobStatus is an enum-type on a mapped attribute.