【问题标题】:@ElementCollection not saved by Hibernate 4.0.1@ElementCollection 没有被 Hibernate 4.0.1 保存
【发布时间】:2012-02-16 10:13:03
【问题描述】:

我有类(实体)A,其中包含对象(实体)列表B,其中包含Set<String> strings。

@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 将其显示为只读...

【问题讨论】:

    标签: spring-3 hibernate-4.x


    【解决方案1】:

    映射没问题。我是盲人,session.beginTransaction();和 session.getTransaction().commit();保存对象时丢失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 2010-12-19
      • 2015-06-30
      • 2016-05-17
      相关资源
      最近更新 更多