☰
Current Page
Main Menu
Home
Home
Editing
当前SDK版本不支持远程调用,请升级SDK再尝试!
Edit
Preview
h1
h2
h3
default
Set your preferred keybinding
default
vim
emacs
markdown
Set this page's format to
AsciiDoc
Creole
Markdown
MediaWiki
Org-mode
Plain Text
RDoc
Textile
Rendering unavailable for
BibTeX
Pod
reStructuredText
Help 1
Help 1
Help 1
Help 2
Help 3
Help 4
Help 5
Help 6
Help 7
Help 8
Autosaved text is available. Click the button to restore it.
Restore Text
# 1.ManyToOne功能增强 ## 1.ManyToOne不需要填写依赖和允许跨App安装 1. 如果是模型的ManyToOne依赖,app.json不需要填写应用依赖 2. 如果2个APP不存在继承扩展,只存在调用关系或者模型的many2one引用,可以不安装在一起 3. **注意:如果模型之前存在继承扩展关系,必须安装在一起** 1.@ManyToOne 指定targetModel的格式为 appName.modelName ```java @Model public class TestLog extends BaseModel { @ManyToOne(targetModel = "newSdkApp.TestOrg")// Many2one跨app安装,格式为:其他app的名字.模型名 @JoinColumn(name = "org_code") private Map<String, Object> testOrg; } ``` 2.如果需要再ManyToOne方添加tab页显示另外一个app的数据,需要再tabs的body里面指定 "app": "newSdkAppOthers" ```json "tabs": [ { "body": { "columns": [ { "label": "备注", "name": "remark" }, { "label": "创建时间", "name": "createDate" } ], "app": "newSdkAppOthers", "field": "testLogs", "type": "grid" }, "header": "日志列表", "tbar": [] } ] ``` ## 2.ManyToOne指定任意的显示字段 之前的ManyToOne默认只能是 displayForModel字段,现在已经修改成支持任意字段的显示 **通过注解displayFormat指定任意显示的字段(指定的字段必须是存在数据库中的,不能是related字段):** **指定任意字段:** ```java @ManyToOne(displayName = "2单选异步获取Many2one", cascade = {CascadeType.DEL_SET_NULL},displayFormat ="orgCode") @ManyToOne(displayName = "2单选异步获取Many2one", cascade = {CascadeType.DEL_SET_NULL},displayFormat ="${orgCode}") ``` **指定多个字段格式化输出:** ```java @ManyToOne(displayName = "2单选异步获取Many2one", cascade = {CascadeType.DEL_SET_NULL},displayFormat ="${name}-${orgCode}") ``` ## 3.ManyToOne关联非ID字段,比如关联code字段 之前的ManyToOne默认只能是关联ID字段,现在可以关联code等非ID字段 示例 **通过注解referencedProperty指定任意字段:** ```java @ManyToOne(displayName = "2单选异步获取Many2one", cascade = {CascadeType.DEL_SET_NULL}) @JoinColumn(name = "org_id", referencedProperty = "orgCode") private TestOrg org; //引擎内置的base app的模型可以不指定app @ManyToOne(displayName = "组织", targetModel = "rbac_organization") @JoinColumn(name = "org_code", referencedProperty = "code") private Map<String, Object> organization; //如果明确知道是跨app安装,需要指定app.modelname, @ManyToOne(displayName = "组织", targetModel = "mbm-main.res_enterprise") @JoinColumn(name = "org_code", referencedProperty = "code") private Map<String, Object> enterprise; ``` ## 4.ManyToOne和ManyToMany支持related属性显示 ```java 4.1.Many2one的用法 ,不需要使用select属性 @@Model(name = "TestUser", description = "用户") public class TestUser extends BaseModel<TestUser> { @ManyToOne(displayName = "组织") @JoinColumn(name = "org_id", referencedProperty = "id") private TestOrg org; } @Model(name = "TestOrg", description = "组织") public class TestOrg extends BaseModel<TestOrg> { @Property(displayName = "名称") private String name; @ManyToOne @JoinColumn(name = "parent_id") private TestOrg parent; @Property(displayName = "父组织",related = "parent.name",displayForModel = true) private String parentName; } 4.2.ManyToMany @ManyToMany @JoinTable(name = "role_user", joinColumns = @JoinColumn(name = "user_id", nullable = false), inverseJoinColumns = @JoinColumn(name = "role_id", nullable = false)) @Selection(multiple = true,properties = "parentNmae") @Property(displayName = "角色") private List<TestRole> roleList; @Model public class TestRole extends BaseModel { @Property(columnName = "role_name", displayName = "角色名称") private String roleName; @ManyToOne @JoinColumn(name = "parent_id") private TestOrg parent; @Property(displayName = "父组织",related = "parent.name") private String parentNmae; } ```
Uploading file...
Sidebar
[[_TOC_]]
Edit message:
Cancel