Javers 查询语言版本

versions in Javers query language

我有一个关于使用来自 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;

这里是快照中保存内容的示例 table:

对于 x 状态:

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

对于 z 状态:

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

y 状态:

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

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

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

因此,如果您有 2 个实体(X 和 Y),以 OneToMany 关系加入,则不能这样查询:'give me all snapshots of Y which are joined to my Entity X with id 1'.

但是你可以通过稍微改变你的模型来实现这一点。如果 Y 是实体 X 拥有的 ValueObject(没有标识的对象),那么您可以在 JQL 中查询:'give me all snapshots (or changes) done on ValueObject Y owned by my Entity X with id 1'.