MongoDB中的Hibernate嵌入式实体不会更新

时间:2015-05-18 09:28:16

标签: hibernate mongodb hibernate-ogm

我试图将名为Data的实体嵌入另一个名为Workflow的实体。

我想要获得这样的东西:

{  
   "_id" : ObjectId("my-object-id"),
   "myproperty" : "myvalue",
   "data":{  
      "category":"DataStore",
      "cullTime":false,
      "cullSpace":false,
      "faveColor":"#449d44",
      "faveShape":"ellipse",
      "filter":false,
      "id":"s1",
      "name":"Source",
      "type":"Rainfall"
   }

}

我按如下方式设置了我的实体:

@Embeddable
public class Data{

    private String category; 
    private String faveColor;
    private String faveShape;
    private String id;
    /* and so on with getters and setters */

在我的工作流程实体中,我有:

@Entity
@Table(name = "workflows")
public class Workflow { 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @TableGenerator(name = "workflows")  
    private ObjectId id;
    public String getId() { return id.toString(); }
    public void setId(ObjectId id) { this.id = id; }             
    @Embedded
    private Data data; 
    /* and so on with getters and setters */

在我的数据库服务中,我有:

Session s = HibernateUtil.getSessionFactory().openSession();
Workflow w = (Workflow) s.get(Workflow.class, new ObjectId(UUID));
w.setData(data);
s.update(w);

s.update(obj)的结果是成功的,但更改不会持续存在于数据库中。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我通过在更新后刷新会话来解决。

s.update(w);
s.flush();