如何查找包含至少一个指定标记的所有条目(帖子)。春季数据

时间:2015-04-01 15:27:28

标签: java spring jsp spring-data spring-data-jpa

我试图仅检索具有特定标签的条目(帖子)。一个条目可以有很多标签,所以我使用List of objects。但我不知道如何在Controller类中构建一个合适的命令,实际上我害怕我完全迷失在这里。

Entry实体如下所示:

@Entity
public class BlogEntry {

@Id
@GeneratedValue
private Integer id;

private String title;

@Column(name = "published_date")
private Date publishedDate;

@ManyToMany
@JoinTable
private List<TagBlog> blogTags; /* Multiple tags to one entry */

我的标签实体:

@Entity
public class TagBlog {

@Id
@GeneratedValue
private Integer id;

private String tag;

@ManyToMany(mappedBy="blogTags")
private List<BlogEntry> entries;

在我的EntryService类中,我想要执行这种排序&#34; findByTagBlogIn&#34;我希望将返回具有特定标签的帖子列表。

public List<BlogEntry> findAllByTags(List<TagBlog> tag){                            

    List<BlogEntry> blogEntry = entryRepository.findByTagBlogIn(tag);

    return blogEntry;
}

但我不知道如何在Controller类中引用它。如何仅检索具有特定标记的条目?像这样的东西?但是如何将标签列表作为参数传递,也许它应该是String?

@RequestMapping(value="/welcome")
public String retrieveTaggedEntry(Model model, ?List of tags?){

model.addAttribute("entriesWithTag", entryService.findAllByTags(TagBlog tag));

    return "redirect:/welcome.html"; 
}

在welcome.jsp文件中,我想迭代整个已分配给特定条目(post)的标签列表,如下例所示(箭头之间&#34; ---&gt;&lt ;- - &#34;是我的遗产的一部分):

<c:forEach items="${entries}" var="entry"> <!--"entries" refers to List of BlogEntry-->
<table>
            <tr>
                    <td>Entry No. ${entry.id }</td>
                    <td>${entry.title}</td>
                    <td>
                    Tags: ---> #${entry.? blogTag.tag ?}, <--- 
                    </td>
                    <td>Published: ${entry.publishedDate}</td>
                    <td>
                        <spring:url value="/delete_entry/${entry.id}.html" var="url" />
                        <a href="${url}">Delete</a>
                    </td>
            </tr>
        </table>
</c:forEach>

通过稍后解决,我想通过具有特定标记的条目执行排序(通过映射spring:url value =&#34; / tag / $ {some_tag_as_a_String} .html&#34;)。

也许只有一种更简单的方式来返回只有特定标签的帖子?但我想我和我在这里工作会更容易。无论如何,任何提供的解决方案都表示赞赏。

如果需要,我愿意添加任何其他信息。

1 个答案:

答案 0 :(得分:0)

您是否有任何理由要将整个TagBlog对象发送给Controller?为什么不只是标签ID或标签文字? E.g。

@RequestMapping(value="/welcome")
public String retrieveTaggedEntry(Model model, @RequestParam List<String> tags) {
    // Do something with your tags
}