我如何获得 Media class 和它 returns 两个实体的列表?

How can i get a list of Media class and it returns two entities?

我在 spring 网络应用程序中有两个 classes 视频和照片,使用 jpa,mysql,amazon s3,我想要的是能够 return 在我看来,媒体列表意味着视频和照片一起作为一个实体。有没有办法做到这一点。我需要一个主意。

想法

如果我创建一个媒体 class 并使照片和视频扩展此 class 这会有所帮助吗?有没有办法说 getMediaList 及其 returns 视频和实体按创建日期排序?

如果我对你的问题理解正确,你实际上可以创建一个摘要 Media class,并使 VideoPhoto class es 从它延伸。

要在 List<Media> 中对所有元素进行排序,您可以实施 sort 方法,该方法在日期字段上使用比较器。


例如,classes 可以组织如下:

public abstract class Media {
    protected Date createdOn;
    protected String name;

    protected Date getCreationDate() {
        return createdOn;
    }

    public String getName() {
        return name;
    }

    public static void sort(List<Media> movieItems) {
        movieItems.sort(Comparator.comparing(Media::getCreationDate));
    }
}


public class Video extends Media {
    private String someAttribute;

    public Video(Date date, String name) {
        createdOn = date;
        this.name = name;
    }
}


public class Photo extends Media {
    private String someOtherAttribute;

    public Photo(Date date, String name) {
        createdOn = date;
        this.name = name;
    }
}


以下代码

public class Main {
    public static void main(String[] args) {
        // Create first element
        Date date1 = new Date(System.currentTimeMillis());
        Video video1 = new Video(date1, "Timelapse");

        // Create second element
        Date date2 = new Date(System.currentTimeMillis() - 1000);
        Photo photo1 = new Photo(date2, "My pretty picture");

        // Create list
        ArrayList<Media> myMedia = new ArrayList<>();
        myMedia.add(video1);
        myMedia.add(photo1);

        // Original
        System.out.println("Original list:");
        printMediaList(myMedia);

        // Sorted
        System.out.println("Sorted list:");
        Media.sort(myMedia);
        printMediaList(myMedia);
    }

    public static void printMediaList(List<Media> myMedia) {
        for (int i = 0; i < myMedia.size(); i++) {
            System.out.printf("%d. %s\n", i + 1, myMedia.get(i).getName());
        }

        System.out.println();
    }

}


输出这个

Original list:
1. Timelapse
2. My pretty picture

Sorted list:
1. My pretty picture
2. Timelapse


希望这有帮助。