0

我有一个关于使用 javers 的 JQL 的问题如果我有三个模型 x、y 和 z 的关系:

型号 x:

@GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "x_ID")
   private Long xId;

   @Column(name = "A")
   private string  a;

   @JsonIgnore
   @OneToMany(mappedBy = "x")
   private List<y> yList;

型号 z:

@GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "z_ID")
   private Long zId;

   @JsonIgnore
   @OneToMany(mappedBy = "z")
   private List<y> yList;

型号 y:

 @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "y_ID")
    private Long yId;

    @ManyToOne(fetch = FetchType.LAZY)
    @PrimaryKeyJoinColumn(name = "x_ID")
    private x x1;

    @Column(name = "x_ID")
    private Long xId;

    @ManyToOne(fetch = FetchType.LAZY)
    @PrimaryKeyJoinColumn(name = "z_ID")
    private z z1;

    @Column(name = "z_ID")
    private Long zId;

这是快照表中保存的示例:

对于 x 状态:

{ "A": "test", "y": [],"xId": 1}

对于 z 状态:

{ "y": [],"zId":1}

对于 y 状态:

{ "yId": 1, ,"xId": 1, "zId":1}

我的问题是如何通过测试从三个状态搜索中获取更改?

4

1 回答 1

0

一般来说,在 JQL 中,没有类似 SQL 的实体连接。

因此,如果您有 2 个实体(X 和 Y),通过 OneToMany 关系加入,您不能这样查询:“给我 Y 的所有快照,这些快照与我的 id 为 1 的实体 X 连接”。

但是,当您稍微更改模型时,您就可以实现这一点。如果Y 是实体 X 拥有的 ValueObject(没有身份的对象),那么您可以在 JQL 中查询:“给我所有对我的实体 X 拥有的 ID 为 1 的 ValueObject Y 所做的快照(或更改)”。

于 2015-11-29T07:08:26.053 回答