Skip to main content

直接关联

模型

@EqualsAndHashCode(callSuper = true)
@Data
@Model(title = "用户")
public class User extends BaseModel {

@Column(title = "ID")
@Primary
@DefaultOrder
private String id;

@Column(title = "名字")
private String name;

}
@EqualsAndHashCode(callSuper = true)
@Data
@Model(title = "文章")
public class Article extends BaseModel {

@Column(title = "ID")
@Primary
@DefaultOrder
private String id;

@Column(title = "标题")
private String title;

@Column(title = "作者ID")
private String uid;

@Column(title = "所属分组ID")
private String groupId;

}
@EqualsAndHashCode(callSuper = true)
@Data
@Model(title = "分组")
public class Group extends BaseModel {

@Column(title = "ID")
@Primary
@DefaultOrder
private String id;

@Column(title = "分组名称")
private String name;

}
@EqualsAndHashCode(callSuper = true)
@Data
@Model(title = "标签")
public class Tag extends BaseModel {

@Column(title = "ID")
@Primary
@DefaultOrder
private String id;

@Column(title = "所属文章ID")
private String articleId;

@Column(title = "标签名称")
private String name;

}

一对一

@EqualsAndHashCode(callSuper = true)
@Data
@Model(table = false)
public class ArticleModel extends Article {

// left join user on user.id[主键] = article.uid[关联键]
@Join(rightJoinField = "uid")
private User author;

// left join group on group.id[主键] = article.groupId[关联键]
@Join(rightJoinField = "groupId")
private Group group;

}

一对多

这种情况下会导致 _getList 返回扁平化数据的分页异常

更多时候,还是需要的时候再单独查一遍

@EqualsAndHashCode(callSuper = true)
@Data
@Model(table = false)
public class ArticleModel extends Article {

// left join user on user.id[主键] = article.uid[关联键]
@Join(rightJoinField = "uid")
private List<Tag> tags;

}