我需要对数据库进行查询,但我不知道该怎么做。
我有一个实体文章和一个实体标签。一篇文章可以有多个标签。如果我从数据库中检索整篇文章,则可以在Article实体的articleTags字段中找到标记列表。
来自文章:
@OneToMany(mappedBy = "article", cascade = CascadeType.ALL)
@JsonManagedReference("article-articleTags")
private Set<ArticleTag> articleTags;
来自ArticleTag(中间模型):
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "article_id")
@JsonBackReference("article-articleTags")
private Article article;
并标记:
@OneToMany(mappedBy = "tag")
@JsonBackReference("tags-articleTags")
private Set<ArticleTag> articleTags;
在ArticleDaoImpl中,以下query = getCurrentSession().createQuery("from Article a where a.link = "foo.bar"
使用映射到Article的所有集合填充实体。
问题是我有一个字段html_content,它是一个包含文章html内容的blob。这是性能下降,我想要做的是从Article表(包括映射的集合)中检索数据,但没有这个字段。
如果我在文章中创建自定义构造函数,而不是获取所需的数据,我不知道如何填充集合。
我不想做两个单独的查询(检索部分文章及其标签),这就是为什么我要问是否有可能做我想做的事情。
修改
使用@Basic注释无济于事,因为Jackson在尝试序列化到JSP时正在调用数据库。我不想使用@JsonIgnore,因为我有时需要在JSP中使用该字段。 我可能不清楚我正在做什么:
在我90%的案例中,我想要JSP中没有htmlContent的文章。
但我也不希望从数据库中检索该字段,所以我希望以某种方式提取懒惰,当我有这样的东西时
在JSP中article.htmlContent
,只有调用数据库才会发生;
作为注释:我实现了Open View in View模式,因此我可以从JSP访问惰性字段。