2015-10-23 71 views
0

從休眠從嘗試例如4.3的文件,在那裏我有兩個實體「7.2.2.2地圖」:沒有joincolumn Hibbernate測繪地圖/ jointable

@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(); 

怎麼了?

回答

0

您還沒有初始化您的訂單number財產的任何地方,因爲對於String類型的默認值是null因此你在分貝空值。

+0

我重新思考這個功能,而我錯了。如何正確說出。此功能用於加載映射的地圖,但不用於自動填充屬性。 – disable1992