gpt4 book ai didi

java - JPA 查询 - JOIN 子句

转载 作者:行者123 更新时间:2023-12-01 15:36:34 24 4
gpt4 key购买 nike

我有两张 table 表A表B

表 A 包含

第 X 列Y 列Z 列W 列

表 B 包含

P 列Q 列R柱W 列

W 列在两个表中都很常见。

及其实体

第一个实体

@Entity
@Table(name = "A")
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class TableA extends AbstractBaseEntity {

@Id
@NotNull
@Column(name = "X")
private Long sampleId1;

@Id
@NotNull
@Column(name = "Y")
private Long sampleId2;

@Id
@NotNull
@Column(name = "Z")
private Date sampleDate3;

@ManyToOne(targetEntity = TableB.class)
@JoinColumn(name = "W")
private TableB tableB;

...
getter
setter
....
}

第二个实体

@Entity
@Table(name = "TableB")
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class TableB extends AbstractBaseEntity {

@Id
@NotNull
@Column(name = "W")
private Long sampleId4;

@Id
@NotNull
@Column(name = "P")
private Long sampleId1;

@Id
@NotNull
@Column(name = "Q")
private Long sampleId2;

@Id
@NotNull
@Column(name = "R")
private Long sampleId3;

...
getter
setter
....
}

我有一个编写所有查询的界面

    Public interface sqlquery{

String query1 = "from TableA ORDER BY" +
sampleDate3 asc;";

String query2= "from TableB";

}

现在我正在这些查询中单独获取所有数据,我需要一些帮助来编写一个新的单个查询,其中数据应基于相同的 ID 显示,即 SampleId4(W 列)使用 JOIN 子句和 where。并将数据存储在结果列表中。

最佳答案

你的映射没有多大意义。如果表 B 中的所有列都是 ID 的一部分,则可能意味着其中可能有几行在 W 列中具有相同的值。因此,如果表 A 中的一行具有此共享值,则它实际上引用了所有行表 B 的这些行。因此,TableA 和 TableB 之间没有 ManyToOne 关联。

关于您的查询,由于映射首先是错误的,所以我不知道如何编写它。即使没问题,你也应该告诉我们查询应该返回什么,因为这还远远不清楚。

关于java - JPA 查询 - JOIN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756757/

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