共用Edit界面,如何动态控制dl加载:
- 编辑,使用编辑数据加载
- 克隆,传入一个数据对象
是不是动态控制dataLoadCoordinator ?
<facets>
<dataLoadCoordinator auto="true" id="dataLoadCoordinator"/>
</facets>
共用Edit界面,如何动态控制dl加载:
<facets>
<dataLoadCoordinator auto="true" id="dataLoadCoordinator"/>
</facets>
@Subscribe("clone")
public void onCloneClick(final Button.ClickEvent event) {
if(ordersTable.getSelected().isEmpty()){
return;
}
var clone = clone(ordersTable.getSelected().iterator().next());
screenBuilders.editor(Order.class,this)
.editEntity(clone)
.build()
.show();
}
再方法里讲clone对象改了值,到了编辑界面还是没有的,应该是根据id重新加载了
clone的方法里要新建对象的:
Order clone(Order order){
var o = dataManager.create(Order.class);
o.setName("cloned order");
o.setOrderType(order.getOrderType());
o.setTypeCode(order.getTypeCode());
return o;
}
不能原来的对象改个id传过去吗
原来的改个id,还是原来的对象;Jmix的 Entity 除了你看到的实体字段外,还有一些JPA的元数据:
你要是不想手动设置,可以用 MetaDataTools.deepCopy()
之后,再设置新 id:
var o = metadataTools.deepCopy(order);
o.setId(UUID.randomUUID());
我重新给了id 用datamanager.save会保存成新的记录吧?
试试就知道了
这两种方式都不行
仔细看看错误:String 无法转为 sql.Clob 类型,这个错跟换id关系不大
确认了,改id保存就可以。
错误是studio将数据库字段VARCHAR2(4000)生成实体的时候带了@Lob注解,去掉就可以了