JPA-запрос с OneToMany - PullRequest
       14

JPA-запрос с OneToMany

0 голосов
/ 27 июня 2018

Ниже мои лица. Я пытаюсь вызвать ChannelGenre.findByGenreId, чтобы получить ChannelGenre со списком каналов. Но я получил правильные данные после сохранения в первый раз, и я получил только ChannelGenre с пустым списком каналов и другими правильными свойствами в любое другое время. И я могу также получить правильный список, когда я вызываю Channel.findAll (). Что не так с моими кодами?

@Entity
public class ChannelGenre extends Model {

    @OneToMany(mappedBy = "channelGenre", cascade = CascadeType.ALL)
    private List<Channel> channelList;

    @Required
    private String genreId;

    @SerializedName("genreName")
    @Expose
    @Required
    private String genreName;

    private Boolean isAdult;

    public static void renewChannelGenre(ChannelGenre channelGenre) {
        ChannelGenre cg = ChannelGenre.find("byGenreId", channelGenre.getGenreId()).first();
        if (null != cg) {
            ChannelGenre.deleteByGenreId(channelGenre.getGenreId());
        }
        channelGenre.save();
    }

    public static ChannelGenre findByGenreId(String genreId) {
        return (ChannelGenre) ChannelGenre.find("select cg from ChannelGenre cg where cg.genreId = '" + genreId + "'").fetch().get(0);
    }

    public static void deleteByGenreId(String genreId) {
        ChannelGenre.delete("delete from ChannelGenre cg where cg.genreId = '" + genreId + "'");
    }

    public static List<ChannelGenre> findAllGenreName() {
        return ChannelGenre.find("select distinct cg from ChannelGenre cg order by cg.genreId").fetch();
    }

    @Override
    public String toString() {
        return "ChannelGenre [channelList=" + channelList + ", genreId=" + genreId + ", genreName=" + genreName + ", isAdult=" + isAdult + "]";
    }
}

@Entity
public class Channel extends Model {

    @SerializedName("channelId")
    @Expose
    private String channelId;

    @SerializedName("name")
    @Expose
    private String name;

    @ManyToOne
    private ChannelGenre channelGenre;
}

данные, которые я получил:

В первый раз я звоню.

ChannelGenre [channelList=[Channel [channelId=600, name=Sports Schedule Highlights], Channel [channelId=610, name=Now 610], Chann..., genreId=G07, genreName=Sports, isAdult=false]

В другое время.

ChannelGenre [channelList=[], genreId=G07, genreName=Sports, isAdult=false]

1 Ответ

0 голосов
/ 28 июня 2018

Вкл, моя ошибка, я забыл установить channel.channelgenre, прежде чем делать сохранение.

...