public void setUsers(Set<AppUser> users) {
users.forEach(u -> u.getGroups().add(this));
this.users = users;
}
这样我就可以
POST http://localhost:8080/groups
{
"name": "Group X",
"users": ["http://localhost:8080/users/1"]
}
但我的问题是,这对我来说并不合适--它看起来确实像是一种变通方法,而不是真正的Spring方式来实现这个需求。所以..
我目前正在努力使用Spring的@repositoryrestresource
创建关系资源。我想创建一个新组,并将其与调用用户关联,如下所示:
POST http://localhost:8080/users/1/groups
{
"name": "Group X"
}
但是唯一的结果是响应204没有内容
。我不知道为什么。这可能与我的另一个问题有关,也可能与我的另一个问题无关(请参见此处),我试图通过在JSON有效负载中设置相关资源来实现同样的问题--但这也不起作用。
服务器端我得到以下错误:
tion$ResourceSupportHttpMessageConverter : Failed to evaluate Jackson deserialization for type [[simple type, class org.springframework.hateoas.Resources<java.lang.Object>]]: java.lang.NullPointerException
请让我知道,如果你需要任何具体的代码。
@RepositoryRestResource(collectionResourceRel = "groups", path = "groups", exported = false)
public interface UserGroupRepository extends JpaRepository<UserGroup, Long> {
List<UserGroup> findByName(@Param("name") String name);
}
PATCH http://localhost:8080/users/1
{
"groups": [
{
"name": "Group X"
}
]
}
@Autowired
private TestRestTemplate template;
private static String USERS_ENDPOINT = "http://localhost:8080/users/";
private static String GROUPS_ENDPOINT = "http://localhost:8080/groups/";
// ..
@Test
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
public void whenCreateUserGroup() {
// Creates a user
whenCreateAppUser();
ResponseEntity<AppUser> appUserResponse = template.getForEntity(USERS_ENDPOINT + "1/", AppUser.class);
AppUser appUser = appUserResponse.getBody();
UserGroup userGroup = new UserGroup();
userGroup.setName("Test Group");
userGroup.setUsers(Collections.singleton(appUser));
template.postForEntity(GROUPS_ENDPOINT, userGroup, UserGroup.class);
ResponseEntity<UserGroup> userGroupResponse = template.getForEntity(GROUPS_ENDPOINT + "2/", UserGroup.class);
Predicate<String> username = other -> appUser.getUsername().equals(other);
assertNotNull("Response must not be null.", userGroupResponse.getBody());
assertTrue("User was not associated with the group he created.",
userGroupResponse.getBody().getUsers().stream()
.map(AppUser::getUsername).anyMatch(username));
}
userGroup.setUsers(Collections.singleton(appUser));
将中断此测试并返回404错误请求
。
根据SDR参考:
邮政
仅支持集合关联。向集合中添加新元素。支持的媒体类型:
POST http://localhost:8080/users/1/groups (with Content-Type:text/uri-list)
http://localhost:8080/groups/1
问题内容: 让我们看一个例子-书。一本书可以有1..n位作者。作者可以拥有1..m本书。代表一本书的所有作者的一种好方法是什么? 我想到了一个创建Books表和Authors表的想法。Authors表具有一个主要AuthorID密钥,即作者的姓名。图书表具有主要的图书ID和有关图书的元数据(书名,出版日期等)。但是,需要一种将书籍链接到作者以及将作者链接到书籍的方法。这就是问题所在。 假设我们有三
描述 (Description) 占有量词[X{n,m}+]匹配存在至少n但不超过m次的X. 例子 (Example) 以下示例显示了possesive量词的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PossesiveQuantifi
描述 (Description) 不情愿量词[X{n,m}?]匹配存在至少n但不多于m次的X. 例子 (Example) 以下示例显示了不情愿量词的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ReluctantQuantifierDem
描述 (Description) 贪心量词[X{n,m}]匹配至少为n但不超过m次的X. 例子 (Example) 以下示例显示了贪婪量词的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GreedyQuantifierDemo {
我想要一个数据结构来支持这些特定的1: N关系:- 1#。提高0-N 2#。有0-N 3#。培育0-N 4#。是0-N的房子。 注: -这些关系中的状态都是暂时的,例如可能会提升,但一年后,可能会放弃 -所有对象都继承自,并且具有唯一的int-ID。 在所有上述关系中,我希望能够支持这些功能:- F1。添加关系,例如
我明天有一个计算机科学期中考试,我需要帮助确定一个特定递归函数的复杂性,如下所示,这比我已经研究过的东西要复杂得多:它有两个变量 T(n)=3 mT(n-m) 在m为常数的简单情况下,可以通过编写解包关系轻松获得公式;然而,在这种情况下,拆包并不会使生活变得更容易,如下所示(假设t(0)=c): T(n)=3 mT(n-m) T(n-1)=3 mT(n-m-1) T(n-2)=3 mT(n-m-2