Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JPA: как удалить элемент из List в сущности? 
V
    Опции темы
Forsaken
Дата 17.5.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



Здравствуйте.
Пришлось на неопределенный срок забросить Java и за это время из мозга пропало много плохо закрепленных знаний, теперь у меня есть проблемы.
У меня есть такая сущность, (не очень продуманная):
Код

package ru.vibrotron.data;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.*;

import ru.vibrotron.util.Link;
@NamedQueries ({
    
    @NamedQuery(
            name = "findMenuByName",
            query = "SELECT m FROM Menu m WHERE m.name =:name"
    )
})
@Entity
@Table(name="t_menu")
public class Menu implements Serializable {
    
    private static final long serialVersionUID = 107131238611053716L;
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name="element_order")
    private Long order;
    private String name;
    private String path;
    private String status;    
    @OneToMany(fetch=FetchType.LAZY, cascade={CascadeType.PERSIST, CascadeType.REMOVE} )
    @JoinTable( name="t_menus",
            joinColumns={@JoinColumn(name="parent_menu_fk")},
            inverseJoinColumns={@JoinColumn(name="child_menu_fk")})
    private List<Menu> menuItem = new ArrayList<Menu>();
    
    
    @OneToOne(fetch=FetchType.EAGER)
    @JoinColumn(name = "parent_menu")
    private Menu parent;
    
    public Menu() {
    }
    public List<Menu> getMenuItems() {
        return menuItem;
    }
    public void setMenuItems(List<Menu> item) {
        this.menuItem = item;
    }
    public void addMenuItem(Menu item){
        item.parent = this;
        this.menuItem.add(item);
    }
    public Menu getParent() {
        return parent;
    }
    public void setParent(Menu parent) {
        this.parent = parent;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getOrder() {
        return order;
    }
    public void setOrder(Long order) {
        this.order = order;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }
    public String getUrl(){
        return "/menu.html?id=" + getId();
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public List<Menu> getMenuItem() {
        return menuItem;
    }
    public void setMenuItem(List<Menu> menuItem) {
        this.menuItem = menuItem;
    }
    public Link getLink() {
        return new Link(getName(), getPath() );
    }
}


Это типа dropdawn меню, каждое меню может содержать список подменю. Теперь я хочу удалить произвольное, найденное в БД меню с помощью метода:
Код

    public void remove(T entity) {
        getEntityManager().refresh(entity);
        getEntityManager().remove(entity);
    }

Но транзакция заканчивается неудачно. Я думаю что происходит следуеще... Я удаляю сущность из БД, но есть другие сущности которые ссылаются на неё как на дочернюю.
Подскажите пожалуйста, правильны ли мои предположения и как быть в такой ситуации?
PM MAIL   Вверх
Forsaken
Дата 19.5.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.12.2008

Репутация: нет
Всего: 3



Ох, друзья... я жестоко стормозил. Да простит меня модератор.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.