没有 joincolumn/jointable 的 Hibernate 映射图
Hibbernate mapping map without joincolumn/jointable
尝试来自 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
它开始保存订单实体,但属性 number
和 customer
仍然像 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();
怎么了?
您没有在任何地方初始化 number
属性 订单,因为类型 String
的默认值为 null
因此您在数据库中得到一个空值。
尝试来自 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
它开始保存订单实体,但属性 number
和 customer
仍然像 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();
怎么了?
您没有在任何地方初始化 number
属性 订单,因为类型 String
的默认值为 null
因此您在数据库中得到一个空值。