Spring Data JPA Multi-FK加入

时间:2018-10-01 21:56:23

标签: java spring spring-boot jpa spring-data-jpa

我遇到的问题是在Spring Boot v1.5.3应用程序中通过JPA实体框架从3个表的链中查询数据。这些模型定义如下:

ValidationField {  
  @Id id,  
  name,  

@OneToMany(
        orphanRemoval = true,
        fetch = FetchType.EAGER,
        cascade = CascadeType.ALL,
        mappedBy = "validationMessage")  
  Set<ValidationFieldMessage> messages
}


ValidationFieldMessage {  
  @Id id,  

  @ManyToOne(fetch = FetchType.LAZY)
  ValidationField validationField

  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "validation_message_id")
  ValidationMessage validationMessage;
}

ValidationMessage {  
  @Id id,  
  text
}

Spring数据存储库方法定义如下:

List<ValidationField> findByName(String name);

数据示例:

  

Validation_Field
       id | 名称
      0个名字

     

Validation_Field_Message
        id | validation_message_id | validation_field_id
         0 0 0
         1 1 0
         2 2 0

     

Validation_Message
        id | 文本
         0“不应有空格”
         1“不允许使用特殊字符”

但是执行的结果如下:

  

field {
    id:0,
    名称:名字,
    消息:{
      [
         id:0,
         validationMessage:[
            id:1,
            文字:“不允许使用特殊字符”
         ],[
            id:1,
            文字:“不允许使用特殊字符”
         ]
      ]
    }
  }

消息是重复的,而不是单独列出。 我也尝试过使用联接使用@Query,但没有成功。

模型定义中是否缺少某些内容?

0 个答案:

没有答案