无法存储实体的 ManyToOne 关联
Unable to store ManyToOne association for an entity
我无法在 POST 调用中将 foreign_key baz_id 绑定到 Baz,它失败并出现实例化错误,试图存储 bar
POST http://localhost/foo/api/v1/bars
{
"baz_id" : "1",
"weight" : "1.0"
}
@NotNull
@ManyToOne
@JoinColumn(name = "baz_id", nullable = false, referencedColumnName = "id")
private Baz baz;
您的 JSON 对于被映射的对象不正确。它应该是这样的形式:
{
"baz" : {"id":"1"},
"weight" : "1.0"
}
这将允许 Spring 构建一个引用 ID 为 1 的 Baz 实例的 bar 实例。
或者,如果您使用
{
"baz_id" : "1",
"weight" : "1.0"
}
您的 java 实体需要在其中定义 'baz_id' 属性:
@Transient
private String baz_id;
然后您的控制器使用它来决定如何处理这个值;即在保存 Bar 实例之前使用适当的 findbyId 方法设置 baz 引用 - 这也让您有机会验证它是否存在并决定如果不存在该怎么做;创建一个新的或抛出适当的异常。
或者,您可以将 String basic 映射到列,并且仅使用它来设置值:
@ManyToOne
@JoinColumn(name = "baz_id", referencedColumnName = "id", insertable=false, updatable=false, fetch = FetchType.LAZY )
@JsonIgnore
private Baz baz;
@Column(name = "baz_id", nullable = false)
private String baz_id;
这将允许您将 baz_id 用于 REST api,但将 baz 参考用于连接和其他应用程序用法。
我无法在 POST 调用中将 foreign_key baz_id 绑定到 Baz,它失败并出现实例化错误,试图存储 bar
POST http://localhost/foo/api/v1/bars
{
"baz_id" : "1",
"weight" : "1.0"
}
@NotNull
@ManyToOne
@JoinColumn(name = "baz_id", nullable = false, referencedColumnName = "id")
private Baz baz;
您的 JSON 对于被映射的对象不正确。它应该是这样的形式:
{
"baz" : {"id":"1"},
"weight" : "1.0"
}
这将允许 Spring 构建一个引用 ID 为 1 的 Baz 实例的 bar 实例。
或者,如果您使用
{
"baz_id" : "1",
"weight" : "1.0"
}
您的 java 实体需要在其中定义 'baz_id' 属性:
@Transient
private String baz_id;
然后您的控制器使用它来决定如何处理这个值;即在保存 Bar 实例之前使用适当的 findbyId 方法设置 baz 引用 - 这也让您有机会验证它是否存在并决定如果不存在该怎么做;创建一个新的或抛出适当的异常。
或者,您可以将 String basic 映射到列,并且仅使用它来设置值:
@ManyToOne
@JoinColumn(name = "baz_id", referencedColumnName = "id", insertable=false, updatable=false, fetch = FetchType.LAZY )
@JsonIgnore
private Baz baz;
@Column(name = "baz_id", nullable = false)
private String baz_id;
这将允许您将 baz_id 用于 REST api,但将 baz 参考用于连接和其他应用程序用法。