#java #postgresql #jpa #spring-data-jpa
Вопрос:
Я занимаюсь проектом сервер-клиент, который должен быть похож на сайт кинотеатра. У меня есть 2 таблицы в базе данных PostgreSQL.
Это Таблица фильмов
а это Таблица показов
И у меня на сервере есть класс, который выглядит так
package pwsztar.edu.pl.project_kino.dto;
import org.hibernate.annotations.ManyToAny;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import javax.persistence.*;
import javax.swing.text.StyledEditorKit;
import java.sql.Time;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import com.vladmihalcea.hibernate.type.array.BooleanArrayType;
import org.hibernate.annotations.TypeDefs;
@TypeDefs({
@TypeDef(
name = "boolean-array",
typeClass = BooleanArrayType.class
)
})
@Entity
@SecondaryTable(schema = "kino" ,name ="film", pkJoinColumns = @PrimaryKeyJoinColumn(name = "idf"))
@Table(name = "seans",schema = "kino")
public class Seans{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id_se;
private int id_sali;
private int cena_zwykly;
private int cena_vip;
private int idf;
private LocalDate dzien;
private Time godzina;
@Type(type = "boolean-array")
@Column(name = "miejsca_zwykle",columnDefinition = "boolean[]" )
private Boolean[] miejsca_zwykle;
@Type(type = "boolean-array")
@Column(name = "miejsca_vip",columnDefinition = "boolean[]")
private Boolean[] miejsca_vip;
@Column (name = "tytul",table = "film")
private String tytul;
@Column (name ="zdjecie",table = "film")
private String zdjecie;
id_se в таблице «Сеансы» показывает идентификатор, а idf в таблице «Фильм» — идентификатор фильма. Когда я пытаюсь распечатать все показы, предполагается, что будут распечатаны все данные о показе заголовок и ссылка на примерную картинку фильма, но вместо этого я получаю там нули. Я думаю, что JPA выполняет ОБЪЕДИНЕНИЕ не в тех таблицах, если установить первичный ключ класса «Сеансы» как «idf», это сработает, но я не могу. Что я должен сделать, чтобы это сработало.
PS: Извините за не английские названия переменных и имен столбцов.
Правка: Это работает для первых 12 показов, но, вероятно, потому, что это количество фильмов в базе данных. Соединение, вероятно, seans.id_se = film.idf
Комментарии:
1. у вас есть сеансы без фильмов? если у вас есть, то правильно иметь нулевые значения для участников фильма
2. @потрясающе 7 я не