我有三个类-文档,页面,句子。一个文档将有多个页面&每页将有多个句子。我尝试使用spring数据jpa注解来Map一对多关系。但它只适用于只有一层的情况,如-document>page。文档>页面>句子时不起作用。
谁能给我一个解决方案,如何做嵌套的一对多的关系呢?
我的课程如下。
@Entity
@Table(name = "DOCUMENT")
public class Document implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "FILEID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long idFile;
@Lob
@Column(name = "CONTENT")
private byte[] content;
@Column(name = "NAME")
private String name;
@Column(name = "ID_MAIL_USER")
private String idMailUser;
@Column(name = "NUM_PAGES")
private int numPages;
@Column(name = "TO_ANALIZE")
private boolean toAnalize;
@Column(name = "HASH")
private String hash;
@Column(name = "EXTENSION")
private String extension;
@Column(name = "SIZE")
private double size;
@Column(name = "LINK_TO_DRIVE_FILE")
private String linkToDriveFile;
@Column(name="PATH")
private String path;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@Column(name = "PAGES")
private List<Page> pages = new ArrayList<>();
// Setter Getters
}
.
@Entity
@Table(name = "PAGE")
public class Page implements Serializable {
@Id
@Column(name = "PAGE_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long idPage;
@Column(name = "PAGE_NUMBER")
private int pageNum;
@Lob
@Column(name = "CONTENT")
private String content;
@ManyToMany(cascade = CascadeType.ALL)
@Column(name = "SENTENCES")
private List<Sentence> sentences = new ArrayList<>();
// Setter Getters
}
.
@Entity
@Table(name = "SENTENCE")
public class Sentence implements Serializable {
//private long idFile;
//private long idPage;
@Id
@Column(name = "SENTENCE_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "PAGE_NUMBER")
private int pageNumber;
@Column(name = "ORDER")
private int ord;
@Column(name = "CONTENT")
private String content;
@Column(name = "HASH")
private String hash;
// Setter Getters
}
1条答案
按热度按时间s8vozzvw1#
你的
OneToMany
Map不正确。纠正如下使用
@JoinColumn
注解而不是@Column
指定在数据库中的表之间进行物理Map的外键的名称。