Я получаю исключение arrayIndexOutOfBounds, когда пытаюсь сохранить новую запись в своем приложении Grails.Grails 2.4.2 Домен не сохранит более 8 полей
Я сузил проблему до того, чтобы сохранить только 8 полей.
Вот мой домен класс:
package nhvr
class NhvrJourny {
static constraints = {
nhvrNo nullable:true
journeyId nullable:true
width nullable:true
vLength nullable:true
height nullable:true
rearOverhang nullable:true
}
Long nhvrNo
String journeyId
String title
BigDecimal width
BigDecimal vLength
BigDecimal height
BigDecimal rearOverhang
String toString(){
return "$nhvrNo $title"
}
}
Im сохранение данных через службу. Метод выглядит следующим образом:
def saveJourny(Map nhvrJourneyPars) {
if (nhvrJourneyPars?.dateArchived)
da = df.parse(nhvrJourneyPars.dateArchived)
Map journeyPars = [
journeyId : nhvrJourneyPars.journeyId,
title : nhvrJourneyPars.title,
nhvrNo : nhvrJourneyPars.nhvrNo,
width : nhvrJourneyPars.width,
vLength : nhvrJourneyPars.vLength,
height : nhvrJourneyPars.height,
rearOverhang : nhvrJourneyPars.rearOverhang
]
NhvrJourny nhvrJournyInstance = new NhvrJourny(journeyPars)
println "journeyPars:"
journeyPars.each{
println "${it.key}: ${it.value}"
}
if (nhvrJournyInstance == null) {
println "nhvrJournyInstance is null"
notFound()
return
}
if (!nhvrJournyInstance.validate()) {
if (nhvrJournyInstance.hasErrors()) {
println "Errors: ${nhvrJournyInstance.errors.allErrors}"
respond nhvrJournyInstance.errors, view: 'create'
return
}
}
else{
println "No errors in nhvrJourneysInstance."
}
println "nhvrJournyInstance.properties"
nhvrJournyInstance.properties.each{
println " ${it.key}: ${it.value}"
}
nhvrJournyInstance.save(flush:true)
return nhvrJournyInstance
}
я могу увидеть данные, которые пропускаются в и выглядит нормально:
nhvrJournyInstance: {"journeyId":"j1","title":"test","nhvrNo":"2","width":3,"height":3,"vLength":21,"rearOverhang":1}
Это в настоящее время возвращается исключение ArrayIndexOutOfBounds, когда я звоню nhvrJournyInstance.save (флеш: true)
Если я удалю одно из полей класса Domain, данные будут сохранены. Примечание: пока отображается только семь полей, идентификатор и версия добавляются автоматически.
Я тестирование с использованием разбег приложение из IntelliJ 13.1.4 на окнах 7 Мой Grails версия 2.4.2 и Java версии 1.7.0_60 База данных Oracle 11g с использованием ojdbc6.jar
Может кто-нибудь пролил свет на это? это сводит меня с ума.
EDIT - Вот StackTrace:
14. Stacktrace follows:
Message: 14
Line | Method
->> 950 | computeBasicInfo in oracle.jdbc.driver.OracleSql
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 623 | getSqlKind in ''
| 1212 | <init> . . . . . . . . . in oracle.jdbc.driver.OraclePreparedStatement
| 28 | <init> in oracle.jdbc.driver.T4CPreparedStatement
| 68 | allocatePreparedStatement in oracle.jdbc.driver.T4CDriverExtension
| 3140 | prepareStatement in oracle.jdbc.driver.PhysicalConnection
| 3042 | prepareStatement . . . . in ''
| 6022 | prepareStatement in ''
| 699 | $tt__saveJourney . . . . in nhvr.NhvrService
| 58 | $tt__saveJourney in nhvr.NhvrJourneyController
| 198 | doFilter . . . . . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker . . . . . . . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . . . . . . . . . in java.lang.Thread
enter code here
Это звучит не так. Можете ли вы опубликовать трассировку стека, связанную с ArrayIndexOutOfBoundsException? Все это не обязательно, но достаточно кадров, чтобы вернуться к строке кода в вашем сервисе. –
stacktrace идет именно к строке: nhvrJournyInstance.save (flush: true) в моем сервисе. Это то, что так расстраивает –
Вы имеете в виду, что последний кадр в стеке является вызовом '.save (flush: true)'? –