java - 使用 OneToMany 进行 JPA 查询
问题描述
下面是我的实体。我尝试调用 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]
解决方案
开,我的错误,我在保存之前忘记设置 channel.channelgenre。
推荐阅读
- c# - 如何将列别名到另一个操作中
- visual-studio - 将 Microsoft Visual Studio Professional 2019 更新至版本 16.5.3 后,深色模式下的文本颜色发生了变化
- airflow - TFX Trainer 组件未将模型输出到文件系统的问题
- c - 在 c 中为链表创建结构时出现错误 C2061
- javascript - 我不明白 onClick={() => onClick()} (初学者问题)
- c++ - 计算 3d 点的像素坐标
- html - Angular 如何创建动态扩展复选框列表以及如何为 API 捕获价值?
- html - 如何在 Angular 中创建具有任意深度的文件夹结构?
- jquery - 选中复选框时触发功能的小问题
- blockchain - 如何使用 decl_storage 中的 struct 映射 rust 原语!基板中的宏