Получите недавно обновленные результаты из базы данных при объединении нескольких таблиц с помощью JPA в приложении Spring - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в Spring и JPA, и я пытаюсь написать задание в Spring, которое запускается каждые 3 часа и извлекает записи из Oracle базы данных.

Я хотел бы читать только новый / обновленный контент за последние 3 часа (в идеале с последнего запуска задания).

Я видел несколько примеров в https://spring.io/blog/2011/02/10/getting-started-with-spring-data-jpa/, где мы можем создавать запросы и извлекать данные в соответствии с нашими требованиями , но в моем текущем варианте использования я не использую запросы, а вместо этого использую классы java с аннотациями и использую столбцы соединения между разными таблицами. Есть вероятность, что обновляется только одна из подтаблиц или все таблицы обновляются новым содержимым. Мне нужно получить результаты, если хотя бы одна из таблиц обновлена ​​/ вставлена ​​с новым содержимым.

Campus является основной таблицей и извлекает данные из группы и региона, мне нужно получить данные, если они появятся. данные обновляются в таблице Campus или даже любая группа / регион добавляется / изменяется.

Я использую JDK7 на данный момент.

Есть ли способ выполнить sh вышеуказанное требование?

Ниже приведены примеры Java классов для справки.

@Entity
@EntityListeners(AuditListener.class)
@Table(name = "TABLE_CAMPUS")
public class Campus implements Auditable {
    @Id
    @Column(name = "ID)
    @SequenceGenerator(name = "SIMPLE_ID", sequenceName = "SIMPLE_ID")
    @GeneratedValue(generator = "SIMPLE_ID", strategy = GenerationType.AUTO)
    private Long id;
    @Column(name = "CAMPUS_NAME")
    private String campusName;
    @Column(name = "CAMPUS_ID", nullable = false)
    private Long campusId;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "GROUP_ID")
    private GroupType groupType;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "REGION_ID")
    private Region region;
    ....
    ...
}
@Entity
@EntityListeners(AuditListener.class)
@Table(name = "TABLE_GROUP_TYPE")
public class GroupType implements Auditable {
    @Id
    @Column(name = "GROUP_TYPE_ID")
    @SequenceGenerator(name = "GROUP_TYPE_SEQUENCE", sequenceName = "GROUP_TYPE_ID")
    @GeneratedValue(generator = "GROUP_TYPE_SEQUENCE", strategy = GenerationType.AUTO)
    protected Long id;
    @Column(name = "GROUP_TYPE_NAME", nullable = false)
    protected String groupTypeName;
    ....
    ...
}
@Entity
@EntityListeners(AuditListener.class)
@Table(name = "TABLE_REGION")
public class Region implements Auditable {
    @Id
    @Column(name = "region_id")
    @SequenceGenerator(name = "REGION_ID", sequenceName = "REGION_ID")
    @GeneratedValue(generator = "REGION_ID", strategy = GenerationType.AUTO)
    private Long id;
    @Column(name = "REGION_NAME", nullable = false)
    private String name;
    ...
    ..
}

Любая помощь приветствуется.

...