2013-08-19 3 views
0

hasMany 연관에서 많은 개체를 삭제 한 다음 개체 자체를 삭제하는 데 이상한 문제가 있습니다.RemoveFrom 및 delete()

class User { 
} 
class Website { 
    static hasMany = [websiteUsers : User] 
} 

이 방법 :

내가 도메인 클래스의 웹 사이트 및 사용자 (나는 'belongsTo를'관계가없는)가

한번이 메소드를 호출
void deleteUserFromWebsite(User user,Website website){ 
    log.debug "-----> deleteUserFromWebsite()" 
    println website.websiteUsers 
    website.removeFromWebsiteUsers(user) 
    println website.websiteUsers 
    user.delete(flush:true) 
    log.debug "deleteUserFromWebsite ----->" 
} 

, 모든 것은 괜찮습니다. 그러나 한 번에 대량 작업을 원할 때 (2 명 이상의 사용자 삭제) 최대 절전 모드에서 오류가 발생했습니다.

deleted object would be re-saved by cascade (remove deleted object from associations) 

최대 절전 모드로 웹 사이트에서 사용자를 제거하지 않기 때문에 발생합니다.

두 방법의 로그가 다른 사용자와 호출

제 호 Hibernate에서
2013-08-19 16:49:56,769 [http-bio-8080-exec-9] DEBUG website.WebsiteService - -----> deleteUserFromWebsite) 
[com.**.security.User : 17, com.**.security.User : 3, com.**.security.User : 12, com.**.security.User : 21, com.**.security.User : 16] 
[com.**.security.User : 17, com.**.security.User : 3, com.**.security.User : 21, com.**.security.User : 16] 
2013-08-19 16:49:56,777 [http-bio-8080-exec-9] DEBUG website.WebsiteService - deleteUserFromWebsite -----> 
[com.**.security.User : 17, com.**.security.User : 3, com.**.security.User : 21, com.**.security.User : 16] 
2013-08-19 16:49:56,811 [http-bio-8080-exec-9] ERROR errors.GrailsExceptionResolver - ObjectDeletedException occurred when processing request: [POST] /**/**/** - parameters: 
users: 12,16 
websiteId: mol24o 
deleted object would be re-saved by cascade (remove deleted object from associations): [com.**.security.User#16]. Stacktrace follows: 

가 협회로부터 사용자를 제거 (userId를 12)하지만, 두번째, 삭제되지 않은 ID 16 사용자 에서 많은 것을 가지고 있고 그때 내가 객체를 삭제하고 싶을 때, 최대 절전 모드는 물론 예외를 던집니다.

최대 절전 모드로 캐시를 비우고 웹 사이트 사용자를 업데이트하는 방법이 있습니까?

+0

대량 삭제를 수행하는 코드를 추가 할 수 있습니까 – ikumen

+0

아직 해결되지 않았습니까? – Gideon

답변

0

"대중 행동"이라고 어떻게 부르시겠습니까? 오류는 삭제하려고하는 사용자를 사용 중이거나 참조가 있음을 나타냅니다.

예를 들어 삭제할 웹 사이트 사용자 컬렉션을 통해 순환하는 경우이 오류가 발생할 수 있습니다.

이것에 대한 좋은 설명은 GORM Gotchas을 참조하십시오.