【问题标题】:Hibbernate mapping map without joincolumn/jointable没有 joincolumn/jointable 的 Hibernate 映射映射
【发布时间】:2016-01-23 12:18:48
【问题描述】:

尝试来自 Hibernate 4.3 文档的“7.2.2.2. Maps”中的示例,其中我有两个实体:

@Entity
public class Order {

    @Id
    @GeneratedValue
    private Integer id;

    String number;

    @ManyToOne
    private Customer customer;

    //getters/setters
}

@Entity
public class Customer {
    @Id
    @GeneratedValue
    private Integer id;

    @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
    @MapKey(name = "number")
    private Map<String, Order> orders;

    //getters/setters
}

添加cascade = CascadeType.ALL 开始保存订单实体,但属性numbercustomer 仍然像null 一样保存

我是如何尝试保存的:

session.beginTransaction();
Map<String, Order> map = new HashMap<>();
map.put("0", new Order());
map.put("1", new Order());
map.put("2", new Order());
map.put("3", new Order());
Customer customer = new Customer();
customer.setOrders(map);
session.save(customer);
session.getTransaction().commit();

怎么了?

【问题讨论】:

    标签: java hibernate dictionary mapping persistence


    【解决方案1】:

    您没有在任何地方初始化您订单的number 属性,并且由于String 类型的默认值是null,因此您在db 中得到一个空值。

    【讨论】:

    • 我正在重新考虑这个功能,但我错了。如何正确地说。此功能用于加载映射地图,但不适用于自动填充属性。
    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多