我有一个名为Track的实体与我的源实体关联.如果我的跟踪实体中有数据并且它与源关联,则我无法在源存储库中使用findById或findAll查询,并且会出现如下错误
我得到这个错误:
Servlet.service() for servlet \[dispatcherServlet\] in context with path \[\] threw exception \[Handler dispatch failed: java.lang.StackOverflowError\] with root cause
java.lang.StackOverflowError: null at com.encode.atlas.encoder.entity.track.Track.toString(Track.java:7) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.String.valueOf(String.java:4220) \~\[na:na\] at java.base/java.lang.StringBuilder.append(StringBuilder.java:173) \~\[na:na\] at java.base/java.util.AbstractCollection.toString(AbstractCollection.java:457) \~\[na:na\] at org.hibernate.collection.spi.PersistentBag.toString(PersistentBag.java:585) \~\[hibernate-core-6.1.7.Final.jar!/:6.1.7.Final\] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) \~\[na:na\] at com.encode.atlas.encoder.entity.track.Source.toString(Source.java:9) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) \~\[na:na\] at com.encode.atlas.encoder.entity.track.Track.toString(Track.java:7) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.String.valueOf(String.java:4220) \~\[na:na\] at java.base/java.lang.StringBuilder.append(StringBuilder.java:173) \~\[na:na\] at java.base/java.util.AbstractCollection.toString(AbstractCollection.java:457) \~\[na:na\] at org.hibernate.collection.spi.PersistentBag.toString(PersistentBag.java:585) \~\[hibernate-core-6.1.7.Final.jar!/:6.1.7.Final\] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) \~\[na:na\] at com.encode.atlas.encoder.entity.track.Source.toString(Source.java:9) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) \~\[na:na\] at com.encode.atlas.encoder.entity.track.Track.toString(Track.java:7) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.String.valueOf(String.java:4220) \~\[na:na\] at java.base/java.lang.StringBuilder.append(StringBuilder.java:173) \~\[na:na\] at java.base/java.util.AbstractCollection.toString(AbstractCollection.java:457) \~\[na:na\] at org.hibernate.collection.spi.PersistentBag.toString(PersistentBag.java:585) \~\[hibernate-core-6.1.7.Final.jar!/:6.1.7.Final\] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) \~\[na:na\] at com.encode.atlas.encoder.entity.track.Source.toString(Source.java:9) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453) \~\[na:na\] at com.encode.atlas.encoder.entity.track.Track.toString(Track.java:7) \~\[classes!/:0.0.1-SNAPSHOT\] at java.base/java.lang.String.valueOf(String.java:4220) \~\[na:na\]
我的来源实体:
@Data
@Entity
public class Source {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String name;
private String path;
private Integer duration;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
private List\<Track\> tracks = new ArrayList\<\>();
}
我的跟踪实体:
@Data
@Entity
public class Track {
@Id
@GeneratedValue
(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JsonBackReference
private Source source;
private Integer index;
private String codecType;
private String pixelFormat;
private Integer width;
private Integer height;
private Integer bitrate;
private Double fps;
private String codec;
private Integer sampleRate;
private String channel;
}
查询==我不知道.
' Source source = sourceBRepository.findById(Job.getSource().getId().orElseThrow();'
我使用的是Java 17和Spring 3.0.7版本
我已经try 使用FetchType.LAZY和FetchType.EAGER以及@JsonBackReference,但没有起作用.