我有一個問題。
我正在撰寫連接到資料庫的程式,我不能改變任何東西。我只能從中讀取資料。所以我們假設我有三個表MOVIES, BOOKS, REVIEWDOCUMENT和兩個多對多的表MOVIES_REVIEWDOCUMENT加上BOOKS_REVIEWDOCUMENT。
因為我使用的是Spring Boot和Hibernate,所以我撰寫了簡單的物體類。
@Entity(name = "MOVIES")
@Table(name = "MOVIES")
public class Movies {
@Id
@Column(name = "ID")
private Long id;
@Column(name = "MOVIE_KEY")
private String movieKey;
@Column(name = "TYPE_ANIMATED")
private String typeAnim;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "MOVIES_REVIEWDOCUMENTS",
joinColumns = @JoinColumn(name = "MOVIE_KEY"),
inverseJoinColumns = @JoinColumn(name = "DOCUMENT_KEY"))
private List<ReviewDocuments> reviewDocuments;
}
@Entity(name = "BOOKS")
@Table(name = "BOOKS")
public class Books {
@Id
@Column(name = "ID")
private Long id;
@Column(name = "BOOK_KEY")
private String bookKey;
@Column(name = "TYPE_WRITTEN")
private String typeWritten;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "BOOKS_REVIEWDOCUMENTS",
joinColumns = @JoinColumn(name = "BOOK_KEY"),
inverseJoinColumns = @JoinColumn(name = "DOCUMENT_KEY"))
private List<ReviewDocuments> reviewDocuments;
}
@Entity(name = "REVIEWDOCUMENTS")
@Table(name = "REVIEWDOCUMENTS")
public class ReviewDocuments {
@Id
@Column(name = "OBJID")
private Long objId;
@ManyToMany(mappedBy = "reviewDocuments")
private Set<Movies> movies;
@ManyToMany(mappedBy = "reviewDocuments")
private Set<Books> books;
}
而且它作業得很好。但是因為你可以看到MOVIES和BOOKS幾乎是一樣的,唯一不同的是那些關系表。我在想,我是否可以以某種方式將其提取到abstrac類。
因為我需要做的是創建service類,它將在書籍/電影和它的檔案之后進行迭代,并在reviewDocuments上做一些操作。所以最簡單的方法是為每個物體創建通用服務。
例子:
public void extractData() throws IOException {
Path tempDirectory = Files.createTempDirectory("zip_"/span>) 。
tempDirectory.toFile().deleteOnExit()。
Set<Book> books = movieRepository.findByRidKey(extractionParameters.getWriteNumber())。
for (Book book :
books) {
for (ReviewDocuments documents :
book.getReviewDocuments() ) {
exportDataToFile(data);
}
directoryToZip(tempDirectory.toFile(), book.getId())。
FileUtils.cleanDirectory(tempDirectory.toFile())。
}
FileUtils.deleteDirectory(tempDirectory.toFile())。
}
uj5u.com熱心網友回復:
我不認為你可以在多個多對多的表中使用繼承。
但是你可以定義一個公共介面,并基于該介面實作你的服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/324182.html
標籤:
