Удаление отношения «многие к одному» в спящем режиме не работает должным образом

У меня есть 3 таблицы следующим образом:

  1. Пользователь имеет идентификатор пользователя
  2. UserProductEntitlement имеет userId и productId и логическое значение
  3. Продукт имеет productId

Это мое представление класса:

@Table(name="User")
class User
{
   @OneToMany(fetch=FetchType.EAGER, targetEntity = ProductEntitlement.class,   cascade=CascadeType.ALL)    
    @JoinColumn(name = "userId")       
    Set<ProductEntitlement> viewableProducts = new HashSet<ProductEntitlement>();
}

@Table(name = "UserProductEntitlement")
class ProductEntitlement
{
    @EmbeddedId
    private ProductEntitlementPk productPk;

    @Column(name = "X_ENABLED")
    @Type(type = "yes_no")   
    private Boolean xEnabled;

        @Embeddable
    private static class ProductEntitlementPk implements Serializable {        

        ProductEntitlementPk() {
        }

        ProductEntitlementPk(User user, Product baseProduct) {
            this.role = role;
            this.baseProduct = baseProduct;
        }

        @ManyToOne( optional = false, targetEntity = User.class)
        @ForeignKey(name = "FK_USER")
        @JoinColumn(name = "userId", nullable = false)
        private User user;

        @OneToOne(optional = false, targetEntity = BaseProduct.class)
        @ForeignKey(name = "FK_Product")
        @JoinColumn(name = "productId", nullable = false)
        private Product baseProduct;

    }   

}

Итак, изначально, когда пользователь входит в систему, загружаются все его права. Но когда я пытаюсь удалить ProductEntitlement из набора viewableProduct, спящий режим запускает оператор обновления как:

update UserProductEntitlement set userId= null where userId=?

У меня есть две проблемы:

  1. почему он запускает обновление вместо удаления?
  2. Это большая проблема - где оператор userId=? вместо userId=? и productId=?

Любая помощь/предложение по этому поводу будет оценена по достоинству.


person user483788    schedule 22.10.2010    source источник


Ответы (1)


Похоже, вы забыли добавить аннотацию @Cascade в viewableProduct.

Подробнее см. здесь.

person FoxyBOA    schedule 23.10.2010
comment
Да, я добавил это .. Извините, забыл добавить в опубликованный вопрос. Это тоже не помогло. - person user483788; 25.10.2010