Когда я пытаюсь сохранить receiveTransaction я получаю это исключениеGrails 2.5.0 нулевой идентификатор для сохраняемого объекта
Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "letter_id" violates not-null constraint Detail: Failing row contains (5, 0, RECEIVE, 67, nraed, 2015-06-22 12:56:17.111, null, ملوخية, 3, null, 1, f, 1, DONE, ps.police.parchive.LetterTransaction, null). at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2161) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1890) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:560) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:363) ... 9 more
Письмо hasMany letterTransaction
LetterTransaction Домен:
class LetterTransaction {
ActionEnum action
Date dateTime
Party party
ArchiveStructure archiveStructure
Boolean reviewed = Boolean.FALSE
TransactionStatus status=TransactionStatus.PENDING
String notes
Long sequence
LetterTransaction relatedTransaction
RelatedLetter relatedLetter
List signs = new ArrayList()
List reviewLogs = new ArrayList()
List divisionPathes = new ArrayList()
List targets = new ArrayList()
String createdBy
boolean deleted
static transients = ['deleted']
static belongsTo = [letter:Letter]
static hasMany = [
targets:Party,
// related letters in case this letter is related to other letters (Attachments)
// actions have bean specified by organization manager التاشيرات
signs:Sign,
// all reviewing actions have bean taken for this letter
reviewLogs:ReviewLog,
// this devision path describes where scans have bean saved, according the ArchiveStructure for this letter
divisionPathes:DivisionPath
]
}
в контроллере
LetterTransaction sendTransactionInstance = LetterTransaction.get(params.long("transactionId"))
LetterTransaction receiveTransaction=new LetterTransaction()
receiveTransaction.action=ActionEnum.RECEIVE
receiveTransaction.letter=Letter.get(sendTransactionInstance.letter.id)
receiveTransaction.status=TransactionStatus.DONE
receiveTransaction.relatedTransaction=sendTransactionInstance
receiveTransaction.party=InternalDepartment.findByCoreId(session.departmentId)
receiveTransaction.dateTime=new Date()
receiveTransaction.sequence=params.long("sequence")
receiveTransaction.targets=[sendTransactionInstance?.party]
receiveTransaction.notes = params.comments
receiveTransaction.archiveStructure = ArchiveStructure.get(params.long("archiveStructure.id"))
if(!receiveTransaction.hasErrors() && receiveTransaction.save(flush: true,failOnError: true)){
sendTransactionInstance.letter.addToTransactions(receiveTransaction)
sendTransactionInstance.letter.save(flush: true,failOnError: true)
//copy all scans to the new folder
manageService.copyLetterScansFromOrganization(sendTransactionInstance, sendTransactionInstance?.party?.coreId,null, getCurrentUser())
render "OK"
}else{
def errors=g.renderErrors(bean: receiveTransaction)
render errors
}
Удостоверьтесь, что 'Letter.get (sendTransactionInstance.letter.id)' is not 'null' – Armaiti
Письмо в письмеTransaction nullable false .. LetterTransaction принадлежит букве, поэтому оно не может быть null –