이 오류 메시지는 이미 최대 절전 모드 컨텍스트에서 여러 번 게시되었습니다.Grails는 "예외 발생 후 세션을 플러시하지 않음"오류 메시지
Grails의 서비스와, 어떤 도움이 정말로 이해할 수있을 것이다 도메인 클래스를 사용하는 동안이 오류가 무엇입니까
도메인 클래스
class Coupon {
Date dateCreated
Date lastUpdated
String code
String email
String address
String state
String city
String zip
def couponCodeGeneratorService
def beforeValidate() {
println code+"---------8-"
code = couponCodeGeneratorService.generate()
println code+"----------"
}
static constraints = {
email blank:false,email:true
address blank:false
state blank:false
city blank:false
zip blank:false
}
}
서비스
class CouponCodeGeneratorService {
Random randomGenerator = new Random()
def serviceMethod() {
}
def generate(){
def group1 = randomGenerator.nextInt(9999)+"";
def group2 = randomGenerator.nextInt(9999)+"";
def group3 = randomGenerator.nextInt(9999)+"";
def group4 = randomGenerator.nextInt(9999)+"";
return group1.padLeft(4,"0") +group2.padLeft(4,"0")+group3.padLeft(4,"0")+group4.padLeft(4,"0")
}
}
내가 점점 오전 오류 is
---------8-
4844634041715590----------
4844634041715590---------8-
| Error 2012-09-10 11:32:54,938 [http-bio-8080-exec-7] ERROR hibernate.AssertionFailure - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)
Message: null id in com.easytha.Coupon entry (don't flush the Session after an exception occurs)
Line | Method
->> 19 | beforeValidate in com.easytha.Coupon
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 46 | onApplicationEvent in org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener
| 24 | save . . . . . . . in com.easytha.CouponController
| 186 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter . . . . . in grails.plugin.cache.web.filter.AbstractFilter
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . . . . . . in ''
^ 662 | run in java.lang.Thread
| Error 2012-09-10 11:32:54,944 [http-bio-8080-exec-7] ERROR errors.GrailsExceptionResolver - AssertionFailure occurred when processing request: [POST] /EasyTha/coupon/save - parameters:
zip: asdf
address: asd
email: [email protected]
state: asd
code:
create: Create
city: asdf
null id in com.easytha.Coupon entry (don't flush the Session after an exception occurs). Stacktrace follows:
Message: null id in com.easytha.Coupon entry (don't flush the Session after an exception occurs)
Line | Method
->> 19 | beforeValidate in com.easytha.Coupon
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 46 | onApplicationEvent in org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener
| 24 | save . . . . . . . in com.easytha.CouponController
| 186 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter . . . . . in grails.plugin.cache.web.filter.AbstractFilter
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . . . . . . in ''
^ 662 | run in java.lang.Thread
나는 Hibernate에 익숙하지 않다. 또한 이것은 신용 카드 번호처럼 보이는 쿠폰 코드를 만드는 올바른 방법 일까?
이 소리를가 검증에 실패 할 수 또는 서비스가 예외 있지만 도메인은 여전히) (저장 호출하려고에 저장 호출하는 코드를 던졌습니다처럼, 수 너는 그걸 확인해 볼까? – Steve
@steve 컨트롤러에는 'scaffold = true'주석 만 있습니다. 서비스 메소드에서 catch catch를 추가했는데 이제는 예외가 약간 다르게 보입니다. 이제 콘솔은 service 메소드를 호출하기 전후에 디버그 메시지를 인쇄합니다. 업데이트 된 예외 – Sap
을 보시기 바랍니다. 'code'가 비어 있고 유효하지 않은 유효성 검증이되어서는 안되며 오류가 나타나는 이유는 아닙니다. 다시 돌아가서 'code'값을 하드 코드 할 수 있습니까? beforeValidate() ... 죄송합니다. 오해의 소지가 있다면이 시점에서 약간의 추측입니다 – Steve