2017-12-12 3 views
0

게시판의 "Grails in Actions"를 읽었으며 다음과 같은 문제점이 있습니다. 예제를 통해 데이터 모델 객체가있을 때 grails 콘솔 전체에서 인스턴스를 생성 할 수 있습니다. 나는 그것을 시작, 나는 그것을 만듭니다. 그것은 인스턴스가 만들어 졌다고 말하지만 DB를 다시 볼 때 Quote 테이블은 비어 있으며 인스턴스가 없습니다. 콘솔이 데이터 모델을 찾기 때문에 이상합니다. 이 기록들이 어디로 가고 왜 데이터베이스에 쓰지 않는가?Grails 3 콘솔이 데이터베이스에 객체 인스턴스를 생성하지 않음

ScreenShot

도메인 모델은 다음과 같습니다

package qotd 

class Quote { 
    String content 
    String author 
    Date created = new Date() 

    static constraints = { 
    } 
} 
+0

방법을 사용하는 경우 '플러시 '? '.save (flush : true)'당신이'flush'를 사용하여 지속하지 않는 한 문서가 저장되어야한다고 말합니다 : [link] (https://docs.grails.org/latest/ref/Domain%20Classes/save. html) grails doc – fsi

+0

다시 작동하지 않습니다. 매우 매우 이상합니다. – VoodooMachinery

답변

0

이 몇 여기 일이 될 수있는 것들 :

  • 유효성 검증 오류가 없는지 확인을

constraint가 yo이면 저장이 실패합니다. 정의 된 내용이 충족되지 않으면 아래 코드로 콘솔에서이를 빠르게 확인할 수 있지만 프로덕션에서는 유효성 검사 오류를 확인합니다. 트랜잭션 내부

quote.save(failOnError: true) // only for testing 
  • 마 데이터베이스 작업
@Transnational 서비스에서이 논리를했을

모범 사례 -이 밖에서 일을 작업을 사용하여 트랜잭션

Quote.withTransaction { ...().save() } 
+0

스크린 샷에서 저자 객체를 생성하지 않은 것으로 보입니다. – fsi

+0

스크린 샷에는 저자 표가 없으므로 아마도 문자열 일 수 있습니다. 데이터 모델은 표시되지 않습니다. – erichelgeson

+0

데이터 모델 코드를 업로드했습니다. 트랜잭션과 함께 작동하지 않습니다. – VoodooMachinery