2015-12-10 31 views
0

我仍在试图弄清楚我究竟是什么,但这是办公室讨论的后果。所以困境是,在映射设置为渴望与为映射定义的存储库时,产生链接。有些时候这很好,但有些时候我宁愿让对象获取自己。如果没有为该实体定义的存储库,那么这就是渴望获取策略会发生的情况。如果我可以传入一个参数并且该存储库的存在消失或重新出现,那么最理想的是什么。春季资料休息讨厌动态动态隐藏资源库

回答

1

并不完全遵循,但无论是否存在回购。如果您希望能够独立于其他实体类型访问类型X的实体,那么您必须定义类型X的回购。

1

我认为您可以使用projections来实现类似的功能。

所以你定义了一个为你的关联实体定义一个仓库。默认情况下,spring data rest只会呈现一个到这个实体的链接,而不会将它嵌入到响应中。

然后,为您的关联实体定义一个带有getter的投影。如果您想通过添加projection查询参数进行投影,您可以在客户端进行选择。

因此,可以说你有一个地址的人 - 导出库中存在的Person和Address:

@Entity 
public class Person { 

    @Id @GeneratedValue 
    private Long id; 
    private String firstName, lastName; 

    @OneToOne 
    private Address address; 
    … 
} 


interface PersonRepository extends CrudRepository<Person, Long> {} 


interface AddressRepository extends CrudRepository<Address, Long> {} 

你的投影看起来是这样的:

@Projection(name = "inlineAddress", types = { Person.class }) 
interface InlineAddress { 

    String getFirstName(); 

    String getLastName(); 

    Address getAddress(); 
} 

如果你打电话http://localhost/persons/1?projection=inlineAddress你有地址嵌入 - 默认情况下,它只是链接。