我有四个类应放在一个db表中。
第一堂课代表基本信息。
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE")
@Entity
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class A {
@Id
private String id;
private LocalDateTime date;
private String someString;
}
第二个类扩展了类a并具有一些额外的属性。
@Inheritance
@MappedSuperclass
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class B extends A {
private String extraProperty;
}
最后,有两个具有具体类型信息的并行类。
@Entity
@DiscriminatorValue(value = "C1")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class C1 extends B {
private String property1;
private String property2;
}
@Entity
@DiscriminatorValue(value = "C2")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class C2 extends B {
private String propertyX;
private String propertyY;
}
ReST存储库如下所示:
@RepositoryRestResource(
path = "items",
collectionResourceRel = "items"
)
public interface ItemRepository extends PagingAndSortingRepository<A, String> { }
现在我已经编写了一个测试预期格式的测试。
@Test
public void shouldReturnItemlistWithCorrectDataStructure() throws Exception {
mockMvc.perform(get("/Items"))
.andExpect(jsonPath("$._embedded.items").isArray())
.andExpect(jsonPath("$._embedded.items", hasSize(2)))
.andExpect(jsonPath("$._embedded.items[0].id").value("1234567"))
...
}
我期望结果json中有一个数组(items []),但实际上有两个不同的数组c1 []和c2 []。
任何想法我做错了什么?