Я не могу запросить медиафайлы по идентификатору (pk) только для имени и альтернативных заголовков.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Я не могу запросить медиафайлы по идентификатору (pk) только для имени и альтернативных заголовков.

Сообщение Anonymous »

Я пытаюсь написать запрос для фильтрации мультимедиа по категории, идентификатору, имени и альтернативным названиям. Когда я передаю категорию и имя или альтернативное название, запрос работает нормально, но когда я передаю только категорию и идентификатор, запрос возвращает пустой список (носитель с соответствующим идентификатором существует).
Я пишу это запрос на попытку фильтрации мультимедиа:

Код: Выделить всё

    @Query("SELECT m FROM MediaModel m " +
"LEFT JOIN AlternativeTitleModel a ON a MEMBER OF m.alternativeTitles " +
"WHERE m.mediaCategory = :category " +
"AND m.id = :id " +
"OR m.name LIKE CONCAT('%',:name,'%') " +
"OR a.name LIKE CONCAT('%',:alternativeTitle,'%')")
public List findMediaByIdOrNameOrAlternativeTitleAndMediaCategory(
@Param("id") Integer id,
@Param("name") String name,
@Param("alternativeTitle") String alternativeTitle,
@Param("category") MediaCategoryModel category
);
Этот запрос также возвращает пустое значение:

Код: Выделить всё

public Optional findMediaByIdAndMediaCategory(Integer id, MediaCategoryModel category);
И я уже попытался удалить левое соединение, альтернативные плитки и имя, но запрос продолжает возвращать пустой список.
MediaModel.java

Код: Выделить всё

package com.espacogeek.geek.models;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.hibernate.annotations.UpdateTimestamp;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Entity
@Table(name = "medias", indexes = {@Index(name = "idx_name_media", columnList = "name", unique = true)})
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class MediaModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_media")
private Integer id;

@Column(name = "name_media")
private String name;

@Column(name = "episode_count")
private Integer totalEpisodes;

@Column(name = "episode_length_in_minutes")
private Integer episodeLength;

@Column(name = "about", length = 1000)
private String about;

@Column(name = "url_cover")
private String cover;

@Column(name = "url_banner")
private String banner;

@JoinColumn(name = "id_category")
private MediaCategoryModel mediaCategory;

@OneToMany(mappedBy = "media", fetch = FetchType.EAGER)
private List externalReference;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "medias_has_companies",
joinColumns = @JoinColumn(name = "medias_id_media"),
inverseJoinColumns = @JoinColumn(name = "companies_id_company"))
private List company;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "medias_has_people",
joinColumns = @JoinColumn(name = "medias_id_media"),
inverseJoinColumns = @JoinColumn(name = "people_id_person"))
private List people;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "medias_has_genres",
joinColumns = @JoinColumn(name = "medias_id_media"),
inverseJoinColumns = @JoinColumn(name = "genres_id_genre"))
private List genre;

@OneToMany(mappedBy = "media")
@Transient
private List  userLibrary;

@UpdateTimestamp
@Column(name = "update_at")
private Date updateAt;

@OneToMany(mappedBy = "media", fetch = FetchType.EAGER)
private List alternativeTitles;

@OneToMany(mappedBy = "media", fetch = FetchType.EAGER)
private List season;
}
AlternativeTitlesModel.java

Код: Выделить всё

package com.espacogeek.geek.models;

import java.io.Serializable;
import java.util.List;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Index;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Table(name = "alternative_titles", indexes = { @Index(name = "idx_name_alternative_title",columnList = "name", unique = true) })
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class AlternativeTitleModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_alternative_title")
private Integer id;

@Column(name = "name_title")
private String name;

@ManyToOne
@JoinColumn(name = "id_midia")
private MediaModel media;
}

MediaCategoryModel.java

Код: Выделить всё

package com.espacogeek.geek.models;

import java.io.Serializable;
import java.util.List;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.persistence.Transient;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "media_categories")
public class MediaCategoryModel implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_media_category")
private Integer id;

@Column(name = "type_category")
private String typeCategory;

@OneToMany(mappedBy = "mediaCategory")
@Transient
private List medias;
}

Весь мой код можно найти в репозитории GitHub.
Спасибо за внимание.

Подробнее здесь: https://stackoverflow.com/questions/788 ... ive-titles
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»