gpt4 book ai didi

java - Play Framework 2.2 : How to define an ebean ManyToMany query

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:53 25 4
gpt4 key购买 nike

我正在尝试在 play 2.0 中实现 play 1.0 中的 yabe 教程

目前我陷入了标记功能:http://www.playframework.com/documentation/1.2.3/guide6

本质上问题是这样的:

我有一个 Post 类,每个 Post 对象可以有多个与该类关联的标签:

@ManyToMany(cascade=CascadeType.PERSIST)
public Set<Tag> tags;

我想编写一个函数,给定一个标签数组,当且仅当所有标签都存在于 Post 对象中时,该函数才会返回一个 Posts 列表。

单元测试如下:

    @Test
public void testTags() {
// Create a new user and save it
SuperUser.setInstance("bob@gmail.com", "secret", "Bob").save();

SuperUser bob = SuperUser.getInstance();

// Create a new post
Post bobPost = new Post(bob, "Hello world","My first post");
bobPost.save();

Post anotherBobPost = new Post(bob, "Hello world", "Hop");
anotherBobPost.save();

// Well
assertEquals(0, Post.findTaggedWith("Red").size());

// Tag it now
bobPost.tagItWith("Red").tagItWith("Blue").save();
anotherBobPost.tagItWith("Red").tagItWith("Green").save();

// Check
assertEquals(2, Post.findTaggedWith("Red").size());
assertEquals(1, Post.findTaggedWith("Blue").size());
assertEquals(1, Post.findTaggedWith("Green").size());

// Checks for multiple tag params
assertEquals(1, Post.findTaggedWith("Red", "Blue").size()); //Fail - Actual: 0
assertEquals(1, Post.findTaggedWith("Red", "Green").size());
assertEquals(0, Post.findTaggedWith("Red", "Green", "Blue").size());
assertEquals(0, Post.findTaggedWith("Green", "Blue").size());

SuperUser.removeSuperUser();

}

我当前的实现如下:

    public static List<Post> findTaggedWith(String... tags) {

ExpressionList<Post> expAcc = Post.find.fetch("tags").where().conjunction();

for( String tag : tags){

expAcc = expAcc.eq("tags.name", tag);

}

return expAcc.endJunction().findList();
}

我不知道下一步该做什么,因为我强行这样做却一事无成:(

谢谢!

最佳答案

尝试打开 EBean SQL 日志记录。对于查看 EBean 正在执行哪些 SQL 语句非常有帮助。

参见this Stackoverflow question

关于java - Play Framework 2.2 : How to define an ebean ManyToMany query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19339721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com