Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Jpa实体-EntityManager.getReference_Spring_Hibernate_Spring Boot_Spring Data Jpa_Spring Boot Jpa - Fatal编程技术网

Spring Jpa实体-EntityManager.getReference

Spring Jpa实体-EntityManager.getReference,spring,hibernate,spring-boot,spring-data-jpa,spring-boot-jpa,Spring,Hibernate,Spring Boot,Spring Data Jpa,Spring Boot Jpa,我有一个使用SpringJPA的SpringBoot应用程序,我正试图通过提供这些子实体的ID来保存一个具有一些外键的新实体。比如说: @Table(name = "PERSON") public class Person { @Column(name = "PET_GUID") public Pet pet; } 使用这个,我希望能够让我的PersonRepository实现Crudepository,通过提供宠物的guid来拯救一个人。使用直接向上的hibernate,我可以使用Entit

我有一个使用SpringJPA的SpringBoot应用程序,我正试图通过提供这些子实体的ID来保存一个具有一些外键的新实体。比如说:

@Table(name = "PERSON")
public class Person {
@Column(name = "PET_GUID")
public Pet pet;
}
使用这个,我希望能够让我的PersonRepository实现Crudepository,通过提供宠物的guid来拯救一个人。使用直接向上的hibernate,我可以使用EntityManager.getReference实现这一点。我知道我可以将EntityManager注入到我的实体或存储库中,并以这种方式执行某些操作,但有更简单的方法吗?我试着只做person.setPet(new Pet(myPetsGuid)),但这样做时我得到了一个“未找到外键”,因此这似乎不起作用。

首先,您应该添加与
Pet
属性的关系:

@实体
@表(name=“PERSON”)
公共阶层人士{
//...
@ManyToOne(可选=false,fetch=FetchType.LAZY)
@JoinColumn(name=“pet\u guid”)
privat宠物;
}
它说要休眠以使用
Pet
实体(及其表)的外键

其次,您应该使用
PersonRepository
getOne
方法来获取对
Pet
实体的引用,例如:

@服务
公共类人员服务{
私人最终PetRepository petRepo;
私人最终个人信息库个人信息库;
//...
@非空
@交易的
公众人物创建(@NonNull final PersonDto PersonDto){
Person=新人();
//...
UUID-petId=personDto.getPetId();
Pet=petRepo.getOne(perId);
person.setPet(pet);
//...
返回人。保存(人);
}
}
首先,您应该向
pet
属性添加关系:

@实体
@表(name=“PERSON”)
公共阶层人士{
//...
@ManyToOne(可选=false,fetch=FetchType.LAZY)
@JoinColumn(name=“pet\u guid”)
privat宠物;
}
它说要休眠以使用
Pet
实体(及其表)的外键

其次,您应该使用
PersonRepository
getOne
方法来获取对
Pet
实体的引用,例如:

@服务
公共类人员服务{
私人最终PetRepository petRepo;
私人最终个人信息库个人信息库;
//...
@非空
@交易的
公众人物创建(@NonNull final PersonDto PersonDto){
Person=新人();
//...
UUID-petId=personDto.getPetId();
Pet=petRepo.getOne(perId);
person.setPet(pet);
//...
返回人。保存(人);
}
}

啊,是的,我错过了getOne调用。这就是我需要的!谢谢啊,是的,getOne电话是我错过的。这就是我需要的!谢谢