gpt4 book ai didi

java - 当 MongoDB DBRef lazyness 设置为 true 时,抛出 java.lang.IllegalArgumentException

转载 作者:行者123 更新时间:2023-11-29 03:13:08 25 4
gpt4 key购买 nike

我有以下类(class):

@Document(collection = "T_FOO")
public class Foo implements Serializable {

@Field
private String name;

@Field
private String observations;

@DBRef
@Field
private Foo[] parents;

}

哪个在这个测试中成功:

@Test
public void testFooWithParents() throws Exception {
//mock User
User user = new User(); user.setLogin("admin");
when(userService.getUserWithAuthorities()).thenReturn(user);

// Create Father
restFooMockMvc.perform(post("/app/rest/foos")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJson(fooFather)))
.andExpect(status().isOk());
// Create Mother
restFooMockMvc.perform(post("/app/rest/foos")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJson(fooMother)))
.andExpect(status().isOk());

foo.setParents(new Foo[]{fooFather, fooMother});

// Create Foo
restFooMockMvc.perform(post("/app/rest/foos")
.contentType(TestUtil.APPLICATION_JSON_UTF8)
.content(TestUtil.convertObjectToJson(foo)))
.andExpect(status().isOk());

// Read Foo
MvcResult result = restFooMockMvc.perform(get("/app/rest/foos/{id}", DEFAULT_ID))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$.id").value(DEFAULT_ID))
.andExpect(jsonPath("$.name").value(DEFAULT_NAME.toString()))
.andExpect(jsonPath("$.observations").value(DEFAULT_OBSERVATIONS))
.andExpect(jsonPath("$.parents[0].id").value(FATHER_ID))
.andExpect(jsonPath("$.parents[1].id").value(MOTHER_ID))
.andReturn();

String content = result.getResponse().getContentAsString();
}

当我将父数组设置为 lazy = true 时,我得到了这个异常:

    org.springframework.web.util.NestedServletException: 
Request processing failed; nested exception is java.lang.IllegalArgumentException:
Cannot subclass final class class [Lorg.domain.Foo;

这是在我请求 Foo 儿子(“Read Foo”)时抛出的。 Spring 无法再次重新构建对象是怎么回事?

最好的,佩德罗。

最佳答案

在 Spring Data MongoDB 中延迟加载 Db-Refs 仅在属性类型为非最终类或接口(interface)时才受支持,因为我们需要能够为其创建 JDK 或 CGLib 代理。不支持数组。我创建了 https://jira.spring.io/browse/DATAMONGO-1157跟踪这个。

关于java - 当 MongoDB DBRef lazyness 设置为 true 时,抛出 java.lang.IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com