【问题标题】:JPA Query - JOIN ClauseJPA 查询 - JOIN 子句
【发布时间】:2012-01-06 10:55:52
【问题描述】:

我有两张桌子 表 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";

}

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

【问题讨论】:

标签: java sql oracle jpa hibernate-mapping


【解决方案1】:

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

关于您的查询,由于映射首先是错误的,所以我不知道该怎么写。结束,即使没问题,你也应该告诉我们查询应该返回什么,因为它远非明确。

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 2012-06-11
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多