hibernate - 如何在休眠中仅从表和连接表中的多对多关系中获取数据
问题描述
如上图所示,我在库存和类别之间有类似的多对多关系。因此我们有一个名为 stock_category 的连接表。
实体如下:
public class Stock implements java.io.Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "STOCK_ID")
private Integer stockId;
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "stock_category", joinColumns = {
@JoinColumn(name = "STOCK_ID", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "CATEGORY_ID",
nullable = false, updatable = false) })
private Set<Category> categories;
....
和
类别.java:
@Entity
@Table(name = "category")
public class Category implements java.io.Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "CATEGORY_ID")
private Integer categoryId;
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "categories")
private Set<Stock> stocks ;
............
所以基本上在我们的项目中,我们有两个实体,它们以多对多关系(大多数时候是双向的)相互关联。另外,我没有连接表的实体。
我的问题:
1) 我如何只通过加入 stock 和 stock_category(join table) 来获取数据?我不想加入第三张桌子。由于我没有连接表的实体,因此我也被迫加入第三个表,这导致我们的项目出现性能问题。我们正在使用休眠标准。但我尝试过使用 spring data jpa、native query、hql 等做同样的事情,但无法实现。
2) 我是否可以仅从联接表(即 stock_category)中获取数据而不加入任何其他表?
解决方案
推荐阅读
- html - Base64 图像编码 - 如果编码的图像在 src 字符串中,为什么它会调用服务器
- sql - 从未订购过某种产品的客户的 SQL 统计信息
- javascript - 框的“0”宽度呈现为“1”宽度
- vba - vba 代码在 UPDATE 语句中生成语法错误
- r - 发布 rmd 格式
- linux - 库名包含空格时如何组合多个静态库?
- url - 是否有 Instagram 的 URL 链接到带有 user_id 的用户个人资料?
- google-chrome - 将“文件”从弹出窗口传递到内容脚本
- java - 如何在 Java 中生成唯一的 Long 值?
- php - 如何在php结果表的每一行添加删除按钮