该表为中间表,
在save之前,我用entitystate isNew看了这个entity是false,但是运行报错。变成了insert。
从错误看,说的是fd_id不能设置为 null?
应该是设置ManytoMany不需要单独去保存中间表,只要设置主表对应的ManyToMany对象即可。
但是由于我没有用系统自动生成ID,我加了一个entity-listener在saving方法里面设置ID。
但是是无效的。
是否有其他方式保证中间表自动保存的时候添加ID?
好像中间表自己设置id的这种用不了ManyToMany
这个怎么会无效呢?
一般就是用实体事件在提交前设置需要的属性。
我debug,它没有走到那里,为此,我自己加了一个class也是无效的。
@Entity
@EntityListeners(EntityListener.class)
public class MyEntity {
@Id
private Long id;
// Other fields and mappings
// Getters and setters
}
public class EntityListener {
@PrePersist
public void prePersist(MyEntity entity) {
if (entity.getId() == null) {
Long customId = generateCustomId(); // 自定义ID生成逻辑
entity.setId(customId);
}
}
private Long generateCustomId() {
// 编写自定义的ID生成逻辑
// 返回唯一的ID值
}
}
我试了下,可以的:
您这个应该是有jmixgeneratevalue才生效的,但是我的项目由于历史包袱无法用jmix生成的ID
实体事件我试了,无效
项目重启了吗,这些改动需要重启项目的
跟这个没有关系的。
重启了
各种都试了,现在觉得不用多对多了,这样出现问题的几率也小很多
没道理。。有时间你新建一个项目看看有这个问题嘛
有时间,我试试
1 个赞