这是我的域名。
CREATE VIEW ralib.shpfrtn AS
SELECT T01.IDORD#, T01.IDDOCD, T01.IDPRT#,
T01.IDSFX#, T01.IDSHP#, T01.IDNTU$, T01.IDENT# ,
(T01.IDNTU$ * T01.IDSHP# ) AS LINTOT,
T02.IARCC3, T02.IAPRLC , T01.IDORDT, T01.IDHCD3
FROM ASTDTA.OEINDLID T01
INNER JOIN ASTDTA.ICPRTMIA T02 ON T01.IDPRT# = T02.IAPRT#
WHERE t01.iddocd > 20131231
AND t01.IDHCD3 = 'MDL'
AND t01.idord# NOT IN (SELECT t01.idord# FROM astdta.oeindlid b
WHERE idprt# = 'FRTCRDM')
我在控制器中的保存方法是。
import org.apache.commons.lang.builder.EqualsBuilder
import org.apache.commons.lang.builder.HashCodeBuilder
class ManageVehicle implements Serializable {
String vehicle
Short truckKey=0
Short siteID
Integer unitID
String wheelConfig
String model
Short period=0
String usid=UUID.randomUUID().toString()
//static belongsTo = [wheelConfig : TTType,model:TTModel]
int hashCode() {
def builder = new HashCodeBuilder()
builder.append truckKey
builder.append siteID
builder.toHashCode()
}
boolean equals(other) {
if (other == null) return false
def builder = new EqualsBuilder()
builder.append truckKey, other.truckKey
builder.append siteID, other.siteID
builder.isEquals()
}
static mapping = {
table 'TF_Truck'
version false
truckKey column :'TruckKey'
siteID column :'SiteID'
id composite:['truckKey','siteID']
vehicle column: 'TruckID' ,sqlType: 'nvarchar'
wheelConfig column: 'TypID',sqlType: 'tinyint'
model column: 'ModID' ,sqlType: 'tinyint'
unitID column: 'McmID',sqlType: 'tinyint'
period column: 'Period'
usid generator: 'assigned', column:'USID', sqlType:'uniqueidentifier'
}
static constraints = {
period nullable: false
truckKey nullable: false
siteID nullable: false
}
}
当我在这个域上应用保存操作时,我遇到了异常。
def save(ManageVehicle manageVehicleInstance) {
manageVehicleInstance.siteID=RequestContextHolder.currentRequestAttributes().getAttribute("SiteID",RequestAttributes.SCOPE_SESSION) as Short
if (manageVehicleInstance == null) {
notFound()
return
}
if (manageVehicleInstance.hasErrors()) {
respond manageVehicleInstance.errors, view:'create'
return
}
manageVehicleInstance.save(flush:true,failOnError: true)
request.withFormat {
form {
flash.message = message(code: 'default.created.message', args: [message(code: 'manageVehicle.label', default: 'Manage Vehicle'), manageVehicleInstance.id])
redirect manageVehicleInstance
}
'*' { respond manageVehicleInstance, [status: CREATED] }
}
}
建议我解决一些问题。
答案 0 :(得分:2)
我猜Grails无法在重定向中处理复合id。 我有两个选择来解决这个问题
redirect(action:'show', params:[truckKey:manageVehicleInstance.truckKey,siteID:manageVehicleInstance.siteID])
使用2.选项,您可能还需要使用复合ID(例如def manageVehicleInstance = ManageVehicle.findByTruckKeyAndSiteID(params.truckKey, params.siteID)
)将自定义对象加载到“show”操作中。