Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA问题,使用父实体';子对象的s主键';s实体';s主键_Java_Spring Boot_Jpa - Fatal编程技术网

Java JPA问题,使用父实体';子对象的s主键';s实体';s主键

Java JPA问题,使用父实体';子对象的s主键';s实体';s主键,java,spring-boot,jpa,Java,Spring Boot,Jpa,我目前正在用JPA开发我的Spring项目 首先,这里是我的数据库模式的背景信息 所以,当我尝试使用历史的history\u id作为TAG的主键时,我遇到了一些困难。它给了我…init方法调用失败;嵌套的异常是java.lang.IllegalArgumentException:此类[class com.wrapsody.demo.HistoryTag]未定义IdClass错误 因此,我在HistoryTag.java中添加了@IdClass(HistoryTag.HistoryTagAss

我目前正在用JPA开发我的Spring项目

首先,这里是我的数据库模式的背景信息

所以,当我尝试使用历史的history\u id作为TAG的主键时,我遇到了一些困难。它给了我
…init方法调用失败;嵌套的异常是java.lang.IllegalArgumentException:此类[class com.wrapsody.demo.HistoryTag]未定义IdClass
错误

因此,我在HistoryTag.java中添加了
@IdClass(HistoryTag.HistoryTagAssignId.class)

 @NoArgsConstructor(access = AccessLevel.PROTECTED)  @Data @Entity
 @IdClass(HistoryTag.HistoryTagAssignId.class)  
 public class HistoryTag implements Serializable {
     @Id
     @ManyToOne
     private History history;

     @Column
     private String tagName;

     @Builder
     public HistoryTag(String tagName) {
         this.tagName = tagName;
     }

     @NoArgsConstructor
     public static class HistoryTagAssignId implements Serializable {
         private History history;

         public HistoryTagAssignId(History history) {
             this.history = history;
         }
     } 
}
作为参考,这里是History.java

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Data
@Entity
public class History {
    @Id
    @GeneratedValue
    private Long historyId;

    @Column
    private String historyMaterName;

    @Column
    private String historyFreeSetName;

    History(String historyMaterName, String historyFreeSetName) {
        this.historyMaterName = historyMaterName;
        this.historyFreeSetName = historyFreeSetName;
    }
}
如有任何关于解决此错误的指导,我们将不胜感激。
谢谢

对于标记表,您不需要实体类。其历史实体具有:

  @ElementCollection
  @CollectionTable(
        name="TAG",
        joinColumns=@JoinColumn(name="HISTORY_ID")
  )
  @Column(name="TAG_NAME")   
  List<String> tags;
@ElementCollection
@收集表(
name=“TAG”,
joinColumns=@JoinColumn(name=“HISTORY\u ID”)
)
@列(name=“TAG\u name”)
列出标签;

您好,我没有看到这两个类之间有任何子-父关系。我尝试在本地运行相同的代码,对我来说效果很好。我在HistoryTag.javaok中使用了@ManyToOns注释,这是实体之间的关联。您的意思是没有问题??。。为什么它向我显示错误。。。。。。。。。。