Rob*_*Rob 9 java rest json jpa spring-data-jpa
我有两个具有双向关联的jpa实体.
Container包含项目集合的实体(oneToMany)Ommiting getter/setters
@javax.persistence.Entity
@Table(name = "CONTAINER")
public class Container implements Serializable {
private static final long serialVersionUID = -3288335692695653843L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "container", cascade = CascadeType.ALL)
private List<Item> items;
}
Run Code Online (Sandbox Code Playgroud)
实体Item包含对容器(ManyToOne)的引用,具有属性值和日期.提出二传手/吸气剂
@javax.persistence.Entity
@Table(name = "ITEM")
public class Item implements Serializable {
private static final long serialVersionUID = -758343957629274274L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Basic
private Long value;
@Basic
private Date date;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "CONTAINER_ID")
private Container container;
}
Run Code Online (Sandbox Code Playgroud)
我也使用spring-data存储库来公开数据.
我的界面存储库只是扩展CrudRepository<Container, Long>和CrudRepository<Item, Long>
@RepositoryRestResource
public interface ItemRepository extends CrudRepository<Item, Long> {
}
@RepositoryRestResource
public interface ContainerRepository extends CrudRepository<Container, Long> {
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过REST调用创建项目.
首先我在物品库上试过这个 rest/items
POST { "value" : 666, "date" : "2016-01-31T23:00:00.000+0000", "container": {"id":"1"}}
Run Code Online (Sandbox Code Playgroud)
但它只是在容器上创建带有空引用的项目.
当我尝试通过容器存储库添加 rest/containers/1/items
POST { "value" : 666, "date" : "2016-01-31T23:00:00.000+0000", "container": {"id":"1"}}
Run Code Online (Sandbox Code Playgroud)
我得到的HTTP/1.1 204 No Content和<Response body is empty>.没有创建实例.
我的问题是如何通过REST调用添加项目,该调用引用了容器.
编辑:要指定我的问题,我想为现有容器添加新项目.在通过rest(json)创建Item的实例时,我不确定如何处理外部ID键
我通过使用json内部容器的链接解决了这个问题.
POST { "value" : 666, "date" : "2016-01-31T23:00:00.000+0000","container":"http://localhost:8080/container/1"}
我不确定它是否有效 spring-data-rest
编辑:我应该指出,链接的资源必须是@RepositoryRestResource并且应该是聚合根.
| 归档时间: |
|
| 查看次数: |
3025 次 |
| 最近记录: |