我有以下两个实体类由Spring Data管理(实际上是幕后的JPA),出于某些原因,每当我试图将一个新的参与方保存到数据库中时,它都会添加一个新的重复组织者(即表中具有新id的重复条目)。
组织者类
@Entity
public class Organizer implements Serializable {
@Column(nullable=false)
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToMany(cascade={CascadeType.ALL},targetEntity=Party.class,mappedBy="id_Organizer")
private Collection<Party> id_Party;
}
派对课堂
@Entity
public class Party implements Serializable {
@Column(nullable=false)
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade={CascadeType.ALL},targetEntity=Organizer.class)
@JoinColumn(name="id_Organizer",referencedColumnName="id",nullable=false,updatable=false)
private Organizer id_Organizer;
}
保存方法
@RequestMapping(value = "/createparty", method=RequestMethod.POST, produces = "application/json")
@ResponseBody
public List<Party> createParty(@RequestBody ArrayList<Map<String, Object>> models) {
PartyRepository = context.getBean(PartyRepository.class);
OrganizerRepository = context.getBean(OrganizerRepository.class);
List<Party> PartyList = new ArrayList<>();
for (Map<String, Object> model : models) {
Organizer Organizer = OrganizerRepository.findByName((String) model.get("id_Organizer"));
// Create new Organizer if find find returns nothing
Party.setId_Organizer(Organizer);
PartyList.add(Party);
}
// Check SpringDataTemplate on how to save
PartyRepository.save(PartyList);
return PartyList;
}
假设目前所有参与方只能由Organizer表中已列出的组织者创建,则Save方法中for循环中的行将尝试查找指定的组织者,并将参与方的引用设置为此检索到的组织者。
问题是,这实际上使用一个新id在Organizer表中保存了一个重复的Organizer条目。如果Organizer已经存在,我们如何防止这种情况发生?
当我们希望允许某人使用尚未在Organizer表中的新Organizer创建一个新的聚会时,不会出现“保存以备将来使用”的级联。如果是这种情况,那么通过保存聚会,也应该保存一个新的组织者。
使用“合并”而不是“保存”。您的实体不是持久的。
Thread[hz._hzinstance_1_dev.partition-operation.thread-3,5,_hzinstance_1_dev]无法进行远程调用:com.hazelcast.collection.impl.collection.operations.CollectionAddOperation{serviceName='hz:impl:setService',identi
我已经完成了一些Java教程,它们都说在调用类时创建一个新变量。这是为什么?我已经测试了一些代码,但它没有这样做。我已经使用python很长一段时间了,所以我习惯于使用动态语言。 请看下面我一直在玩的一些代码: 谢谢你的时间。
问题内容: 我的JPA / Hibernate应用程序中有几个映射的对象。在网络上,我收到的数据包代表这些对象的更新,或者实际上可能完全代表新的对象。 我想写一个像 如果数据库中存在一个带有pk primaryKey的对象,则该对象将返回所提供类的一个对象,否则将创建该类的新对象,并将其持久化并返回。 接下来,我将使用该对象来更新事务中的所有字段。 在JPA中是否有惯用的方法来执行此操作,还是有更
我有一个jpa实体,比如entityA和另一个实体,比如entityB,它们之间没有任何映射/关联。我想在更新或保存EntityA时对entityB执行一些JPQL或操作。例如,假设我保存了新的entityA,所以我想在entityB上运行一些自定义JPQL查询,或者由于新保存了entityA而从DB中删除entityB。我想使用EntityListener,但我不知道如何使用,因为我在myh自定
我的Person表中有字段country(FK,可以为空)。当我试图用空的国家/地区值保存Person时,我将收到一条错误消息500和消息 2020-01-30 15:16:37.277警告10524---[nio-8098-exec-1]o.h.发动机。jdbc。spi。SqlExceptionHelper:SQL错误:0,SQLState:23502 2020-01-30 15:16:37.2