2012-01-06 166 views
0

我有兩個表 表A 表BJPA查詢 - 連接子句

表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的基礎上,顯示一些幫助條款和地點。 並將數據存儲在結果列表中。

+0

看起來像是http://stackoverflow.com/questions/463349/jpa-eager-fetch-does-not-join的副本 – Vlad 2012-01-06 11:02:40

回答

1

您的映射沒有多大意義。如果表B中的所有列都是ID的一部分,那麼這可能意味着您可能在其中具有多個在列W中具有相同值的行。因此,如果表A中的行具有該共享值,那麼它實際上引用了所有這些行的表B.因此,您沒有TableA和TableB之間的ManyToOne關聯。

關於您的查詢,由於映射是錯誤的,我看不到如何寫它。如果結束,那麼應該告訴我們查詢應該返回什麼,因爲它很不明確。