我的NEWS表与TAGS 1(称为NEWS_TAG表)及其对应的实体成多对多关系。

任务是获取标签,以及带有标签的新闻数量。 可以在每个选择中简单地使用COUNT函数,但是为了提高性能,我在TAGS表中添加了NEWS_COUNT列。

当具有相应标签的新闻被NEWS_COUNT或从数据库中删除时,将更改NEWS_COUNT

如何使用JPA管理NEWS_COUNT属性? 如果我能以某种方式找出持久性提供程序何时修改NEWS_TAG表并相应地更改标签的NEWS_COUNTNEWS_COUNT了。

===============>>#1 票数:1 已采纳

通过添加不必要的NEWS_COUNTNEWS_COUNT ),您必须在每次删除添加操作时更新实体,这会降低性能。 您根本不需要该字段,如果您已正确配置表和实体,则可以使用用于关联实体的集合类型作为基础,您可以通过size()函数获取每个TAGNEWS计数: tag.news.size() ,也可以在JPQL中使用count功能。

但是我不知道有关场景,也许你做的CRUD操作很少,但你的数太大,在这种情况下,最好的方法是使用TRIGGERS来更新字段(如果你的数据库系统支持),以这种方式NEWS_COUNT总是会更新,您无需在应用程序层中做任何事情。 如果您不使用数据库系统内部的机制来更新NEWS_COUNT字段,则必须在应用程序层更新实体并为每个addremove操作增加或减少该字段。

  ask by Aliaxander translate from so

未解决问题?本站智能推荐:

3回复

具有计数和分组依据的JPA查询(与联接表有很多关系)

我有一点问题。 在我的应用程序中,我有两个实体,类似于片段中的内容: 第二个: 如您所见,我准备的实体代表数据库中的两个表,它们之间存在多对多关系(我使用联接表)。 我想计算WishList实体中所有具有相同作者,标题和类别的结果,并返回所有结果,如下所示: 计算结
1回复

使用JPA,插入的数据未反映到联接表中

在Film.java中 在Actor.java包com.flp.ems.domain中; 它应该将film表和actor表连接起来,并且应该创建一个film_actor表。 我的问题是,当我将数据插入Film表和actor表时,数据没有自动插入film_actor表中,为什
1回复

JPA中的ManyToMany:如何将记录插入联接表

我在应用程序中有2个实体:组和用户,它们之间的ManyToMany连接。 创建用户后,它应加入多个现有组。 我看到了一些示例,这些示例显示了如何更新3个表(添加了2个实体,并在联接表中创建了新行)。 在我的情况下,Groups表不应该更新,我得到org.hibernate.except
1回复

JPA的问题,联接表中有额外的列,多对多

我正在尝试使用联接表中的额外列为多对多关系设置JPA映射。 我的模型如下所示:清单列表(id),商品(id),商品列表(idList,itItem,数量) 我的地图: 项目: 物品清单: ItemListId: 我收到此错误: 原因:org.hib
2回复

在JPA中以多对多关系防止联接表中的重复条目

我正在使用EclipseLink 2.5.1(和Hibernate 4.3.5最终版)。 给定MySQL中的下表。 产品 prod_colour(联接表) 颜色 产品及其颜色之间存在多对多的关系。 产品可以具有多种颜色,而颜色又可以与多种产品相关联。
3回复

JPA很多关系没有插入到生成的表中

我的项目中有多对多关系,虽然我能够在我的两个实体表中编写,但关系表却没有写任何内容。 以下是我使用JPA注释声明这一点的方法: Professor.java Aluno.java 这是要插入数据库的服务层: 在这种情况下,请考虑我已经为教授提供了ID为“1”的
1回复

JPA多对多:不清楚为什么持久化后联接表为空

我正在尝试使用JPA(Hibernate 4)+ Spring实现简单的“多对多”关联。 看过无数类似helloworld的示例,当从2个关联表中保存实体时,联接表会自动更新。 但是,就我而言,这不会发生-即使我设置了双向关联和级联, 联接表也​​不会在em.persist()上更新。
1回复

JPA多对多插入

我有3张桌子。 1是父母,1是学生,一个是student_parent。 这是父母与学生之间的多对多关系。 parentID来自父表,studentID来自student表。 student_parent表具有StudentID,parentID和childRelationship。
2回复

@ManyToMany JPA关系,在联接表和英国中使用2度关系

我有这个实体模型(简化): 在A和B之间添加联接表(多对多关系)并使用A.id和Bcid强制执行复合UK的最佳方法是什么? 我尝试过这样的事情: 但是我得到了MultipleBagFetchException ,这很奇怪。 它必须与c_id不是主键的一部分有关。 如果我
1回复

JPA多次合并所有者触发连接表上的删除

我和CustomerUnit之间有很多关系: 当我调用entityManager.merge(customer)时; 在客户(已经在DB中,没有改变)我在日志中看到这两个sql命令: Hibernate:更新CUSTOMERS设置CUS_DESCR =?,CUS_NAME =