0

我正在尝试将一个名为 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) 的结果是成功的,但更改不会保留在数据库中。

谢谢您的帮助。

4

1 回答 1

0

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

s.update(w);
s.flush();
于 2015-05-18T09:53:14.620 回答