双向实体关系使用Spring将id保存为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双向实体关系使用Spring将id保存为空相关的知识,希望对你有一定的参考价值。
我正在了解有关使用JpaRepository进行Spring引导的信息,我对此问题感到停滞。我正在尝试保存对象列表,但是它们保存了双向关系中所有对象的id为null,我看到了很多示例,并且一切正常,即使我有另一个项目,其示例相同但实体不同,并且工作正常,希望我已正确表达自己的问题
A类
@Entity
@Table(name="producto")
public class Producto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id;
// there are more attributes but i'm hiding It to show less code to try this more easier to see
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="proveedor_id")
private Proveedor proveedor;
// getters and setter
// constructor empty and others constructors
另一类
@Entity
@Table(name="proveedores")
public class Proveedor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private Long id;
@OneToMany(mappedBy = "proveedor", cascade = CascadeType.ALL)
private List<Producto> listaProducto = new ArrayList<Producto>();
// getters and setter
// constructor empty and others constructors
这是测试
@Test
void addProveedorConProductos() {
Proveedor test = new Proveedor();
List<Producto> lista = new ArrayList<Producto>();
lista.add(new Producto("bbb","pruebaTest2",123,null,null,null));
lista.add(new Producto("a","pruebaTest21111",123,null,null,null));
test = new Proveedor("pruebaTestCase", 12345,lista);
assertNotNull(proveedor.save(test));
}
结果
全部保存,但id_proveedor保存为空,这是结果https://imgur.com/a/7JDMvrp的图像>
我正在了解有关使用JpaRepository进行Spring引导的信息,我对此问题感到停滞。我正在尝试保存对象列表,但它们以双向关系中所有对象的id为null进行保存,...
我认为您需要先保存Producto。之后,您可以在数据库中的Producto上调用find,然后可以将Producto添加到Proveedor。希望你能解决这个问题。像这样:
我已经按照您的情况实施了项目。您可以参考我的代码,希望您有更多的想法来解决您的问题。
以上是关于双向实体关系使用Spring将id保存为空的主要内容,如果未能解决你的问题,请参考以下文章
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段
如何在 Hibernate 3.6 中正确级联保存主键上的一对一双向关系
如何与 Spring Data REST 和 JPA 保持双向关系?
如何使用 Spring Data JPA 保存具有手动分配标识符的实体?
TypeError: eleves.map 不是一个函数 React/Spring-boot 不能显示@ManyToOne 关系