我不想暴露我的模型类(jpa实体),而是将它们的属性的不同子集暴露给不同的数据传输对象(DTO).
想法是DTO CrudRepository< - > JpaRepository< - >实体,我想通过Spring Data REST公开DTO CrudRepository.
例:
实体:
@Entity
@Table(name = "groups")
public class Group {
private Long id;
private String name;
private Set
JpaRepository:
@RepositoryRestResource(exported = false)
public interface GroupDao extends JpaRepository
DTO:
public class GroupWithoutRelationsDto {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@NotBlank
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
DTO CrudRepository:
public interface GroupDtoDao extends CrudRepository
执行:
@Repository
public class GroupDtoDaoImpl extends GenericDtoDao
GenericDtoDao:
@NoRepositoryBean
public abstract class GenericDtoDao
在这个例子中,我想用Spring数据REST公开GroupDtoDao.
在其他bean中,我可以自动装配GroupDao和GroupDtoDao,因此两者都由Spring的上下文管理.如果我没有使用@RepositoryRestResource(exported = false)注释GroupDao,那么JpaRepository将作为REST服务公开,所以我认为Spring数据REST配置得很好.
如何告诉它公开我的自定义CrudRepository?
最佳答案
有a JIRA issue澄清如何做到这一点.
目前,SDR团队表示“我们通常建议只使用Jackson mixins来挂钩自定义序列化器,自定义输出等.请参阅Spring RESTBucks的示例.”