如何将多个继承的实体放在一个表中?

时间:2017-02-16 10:32:31

标签: java spring hibernate spring-mvc spring-data

我有四个类应放在一个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 []。

任何想法我做错了什么?

0 个答案:

没有答案