2012-01-22 3 views
1

У меня есть класс (entity) A, который содержит список объектов B, который содержит Set<String> strings.@ElementCollection не сохраняется Hibernate 4.0.1

@Entity 
@Table(name = "a") 
public class A { 

    private int id; 
    private List<B> bList; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "aId") 
    public int getId() { 
     return id; 
    } 

    @OneToMany(fetch = FetchType.EAGER) 
    @JoinColumn(name = "aId", nullable = false) 
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE}) 
    public List<B> getBList() { 
     return bList; 
    } 
    ... setters and other stuff 
} 

@Entity 
@Table(name = "b") 
public class B { 

    private int id; 
    private int aId; 
    private Set<String> strings; 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "bId") 
    public int getId() { 
     return id; 
    } 

    @ElementCollection(fetch = FetchType.EAGER) 
    @CollectionTable(name = "b_strings", joinColumns = {@JoinColumn(name = "bId")}) 
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})** 
    public Set<String> getStrings() { 
     return strings; 
    } 

    @Column(name = "aId", insertable = false, updatable = false) 
    public int getAId() { 
     return aId; 
    } 
    ... setters and other stuff 
} 

Я создаю объект A, а затем я пытаюсь сохранить его:

A a = new A(); 
List<B> l = new ArrayList<B>(); 
a.setBList(l); 
B b = new B(); 
l.add(b); 
b.setStrings(new HashSet<String>()); 
b.getStrings().add("1"); 
b.getStrings().add("2"); 

b = new B(); 
l.add(b); 
b.setStrings(new HashSet<String>()); 
b.getStrings().add("3"); 

Session session = sessionFactory.openSession(); 
session.saveOrUpdate(a); 
session.close(); 

A и B объект сохраняется (вставляется), но установить с strings не сохраняется. Я использую Spring 3.1 и Hibernate 4.0.1. Почему спящий режим игнорируется @ElementCollection? Таблица создана, mysql workbech показывает это как readonly ...

ответ

1

картирование в порядке. Я слепой, session.beginTransaction(); и session.getTransaction(). commit(); при сохранении объекта отсутствуют.

 Смежные вопросы

  • Нет связанных вопросов^_^