多对多配置:
一个项目表,一个用户表,一个中间表
这里用户表 我用的jar 封装好的底层 EruptUser表
项目表:
package cn.bist.cdapp.backstage.model;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import xyz.erupt.annotation.Erupt;
import xyz.erupt.annotation.EruptField;
import xyz.erupt.annotation.sub_field.Edit;
import xyz.erupt.annotation.sub_field.EditType;
import xyz.erupt.annotation.sub_field.View;
import xyz.erupt.upms.model.EruptUser;
import javax.persistence.*;
import java.util.Set;
@Erupt(name = "项目管理")
@Table(name = "project_form")
@Entity
@Data
public class ProjectForm {
/**
* 项目编号
*/
@Id
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "native")
@Column(name = "id")
@EruptField
private Long id;
/**
* 项目名称
*/
@EruptField(
views = @View(title = "项目名称"),
edit = @Edit(title = "项目名称")
)
@Column(name = "project_name", columnDefinition = "varchar(20) comment '项目名称'")
private String projectName;
//这里的 二个关联id 是中间表的id 得让他自己生成
this_id 和 people_id 中间表我提前设置好的 project_id 和user_id 报错 只能使用它自己生成的这个
@ManyToMany //多对多
@JoinTable(name = "project_user_form", //定义多对多中间表
joinColumns = @JoinColumn(name = "this_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "people_id", referencedColumnName = "id"))
@EruptField(
views = @View(
title = "下属人员"
),
edit = @Edit(
title = "下属人员",
type = EditType.CHECKBOX
)
)
private Set<EruptUser> users; //Table对象定义如下👇
}
中间表
package cn.bist.cdapp.backstage.model;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import xyz.erupt.annotation.Erupt;
import xyz.erupt.annotation.EruptField;
import xyz.erupt.annotation.sub_field.Edit;
import xyz.erupt.annotation.sub_field.EditType;
import xyz.erupt.annotation.sub_field.View;
import xyz.erupt.annotation.sub_field.sub_edit.ChoiceType;
import xyz.erupt.annotation.sub_field.sub_edit.Search;
import xyz.erupt.upms.handler.SqlChoiceFetchHandler;
import javax.persistence.*;
@Erupt(name = "用户项目(关联)管理表")
@Table(name = "project_user_form")
@Entity
@Data
public class ProjectUserForm {
/**
* 项目编号
*/
@Id
@GeneratedValue(generator = "generator")
@GenericGenerator(name = "generator", strategy = "native")
@Column(name = "id")
@EruptField
private Long id;
@EruptField(
views = @View(title = "项目负责人"),
edit = @Edit(
search = @Search,
title = "项目负责人下拉选择", type = EditType.CHOICE,
choiceType = @ChoiceType(fetchHandler = SqlChoiceFetchHandler.class,
fetchHandlerParams = "SELECT id,name FROM `e_upms_user`"
)
)
)
private Long userId;
@EruptField(
views = @View(title = "项目绑定"),
edit = @Edit(
search = @Search,
title = "项目下拉选择", type = EditType.CHOICE,
choiceType = @ChoiceType(fetchHandler = SqlChoiceFetchHandler.class,
fetchHandlerParams = "select id,project_name from project_form"
)
)
)
private Long projectId;
}
关联表的id 获取关联表 对应表的 name属性
@EruptField(
views = @View(title = "操作人"),
edit = @Edit(
search = @Search,
title = "操作人", type = EditType.CHOICE,
choiceType = @ChoiceType(fetchHandler = SqlChoiceFetchHandler.class,
fetchHandlerParams = "SELECT id,name FROM `e_upms_user`"
)
)
)
@Column(name = "user_id", columnDefinition = "varchar(20) comment '操作人'")
private BigInteger userId;
https://www.yuque.com/erupts/erupt/cmzox9 ;
https://www.erupt.xyz/demo/#/tpl/magic-api.ftl ;guest guest ; ;https://www.erupt.xyz/#!/contrast