如何在列表页面中查询/表示一对多信息
create users (id, name, ...)
create user_tags (id, user_id, tag_name)
user has 1 to many user_tags
示例数据-我希望表格呈现为
user1 tag1,tag2
user2 tag3
user3 tag1
user4
user5 tag5,tag6.tag7
为了构造上表,我必须执行以下操作来构造每一行。
i.e.
select * from users;
for (User user : users) {
// select tag_name from user_tags where user_id = user.id
List<Tag> tags = fetchtags(user)
}
是否有更好的方法为用户获取|缓存标记,这样就不需要花费更长的时间来构建上述用户列表。
如果我没弄错的话,你看的其实是很多种关系。一个用户可以有多个标签,一个标签可以被多个用户使用。让您困惑的是,您试图将映射也映射到JoinTable,而您可以在实体中执行以下操作:
标签实体:
@ManyToMany
@JoinTable(
name = "user_tags",
joinColumns = { @JoinColumn(name = "tag_name") },
inverseJoinColumns = { @JoinColumn(name = "user_id") })
private List<User> users= new ArrayList<>();
用户实体:
@ManyToMany
@JoinTable(name = "user_tags", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "tag_name") })
private List<Tag> productionLines = new ArrayList<Tag>();
正如您所见,在这种情况下,您不必处理联接表。我可能在这里输入了一个错别字,所以你可以在谷歌上找到更多的例子,或者在这里找到“hibernate Manytomy JoinTable example”关键字
这是简单的SELECT
与GROUP_CONCAT()
:
SELECT u.name,GROUP_CONCAT(DISTINCT tag_name) AS tags
FROM users u
LEFT JOIN user_tags t ON (t.user_id=u.id)
GROUP BY u.name;
方法中的主要性能问题是查询数据库N 1
次。一次用于所有用户,N次用于用户标签(N是用户数量)。在连接两个表时,应使用一个选择语句。
既然你用hibernate
标记了你的问题,我想你使用了某种JPA。JPA中的关键字是JOIN FETCH。一个相关的问题可能是这个。
问题内容: 给定这种表结构,我想弄平多对多关系,并将一个表的“名称”字段中的值转换为列标题,并将同一表中的数量转换为列值。当前可行的想法是将值放入Dictionary(哈希表)中并以代码表示此数据,但我想知道是否存在SQL方式来执行此操作。我还将Linq- to-SQL用于数据访问,因此Linq-to-SQL解决方案将是理想的选择。 [TableA](整数ID) [TableB](整数ID,字符串
问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询
接口说明 分页查询团队用户信息列表 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /permissions/api/team/user/v1.0.0/listPage 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN verify string
接口说明 分页查询团队用户信息列表 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /permissions/api/team/user/v
我有一个名为ArtWork的实体,该实体具有属性列表 样式具有称为标题的属性 我需要一个Hibernate查询,返回所有具有style title=“Abstract”的艺术品 -谢谢你的帮助
我正在创建一个strutsHibernate应用程序。我使用hibernate查询获得了一个列表,并将其传递到action类中。但我不知道如何在JSP中显示它。 我已经在查询的基础上成功地得到了列表。现在我想用JSP显示这个列表。 我已经发布了<code>支柱。xml和用于显示结果的JSP。请检查。但在JSP中没有显示任何内容。我使用来显示列表。但没有运气。甚至我也尝试过在下打印简单文本,只是为了