请教一下如何控制这个聚合根的边界

请教大家一下,如何控制这个聚合根的边界啊
场景如下: Order,Customer, Country
订单有一一对应的客户,客户有自己的国家
我认为Order,Customer,Country都是聚合根
因为系统有维护Customer和Country的页面
-------------------------------------------------
问题来了
使用hibernate,一不小心就通过导航,越出边界了
比如以下语句,order通过customer,竟然导航到country了
Order order = OrderRepository.GetbyId("12");
order.customer.country.countryName = "usa";
OrderRepository.save(order);
------------------------------------------
这个国家名字到底应不应该修改呢
如果设定hibernate的级联关系,会修改数据库
但是按照DDD的理论,应该由聚合根来保存country啊

另外程序员写出了这样的代码,主观上是想修改国家的,如果数据库不修改,程序员估计很奇怪
如何防止程序员写出这样的代码呢


当然不设定Hibernate级联关系,如果hibernate无法做到,抛弃Hibernate。Hibernate是在DDD之前诞生的,矛盾是有的。

使用Repository仓储接口提供以Customer的相关信息修改。

另外,聚合根是Order,但是Customer肯定不算Order这个聚合边界,最多是Customer值对象算在聚合中,而Customer实体不是,Customer实体通过复制一个值对象给Order,作为其一个字段。