0
我在Hibernate中有多對多的關係其他colums所以我有一個額外的java類和模型,另一個類與主鍵......現在在HQL我需要一個查詢,檢索這些數據,但我有問題加入條件。HQL多對多連接多列
這是我的第一類:
@Entity
@Table(name = "Firsts")
public class First {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToMany(mappedBy = "primaryKey.second")
private List<FirstsSeconds> seconds = new LinkedList<>();
@Column(name="description")
private String description;
...
}
第二類:
@Entity
@Table(name="Seconds")
public class Second {
@Id
private String code;
@OneToMany(mappedBy = "primaryKey.first")
private List<FirtsSeconds> firsts = new LinkedList<>();
...
}
,並用另外列的表多對多:
@Entity
@Table(name = "firsts_seconds")
@AssociationOverrides({ @AssociationOverride(name = "primaryKey.first", joinColumns = @JoinColumn(name = "id")),
@AssociationOverride(name = "primaryKey.second", joinColumns = @JoinColumn(name = "code")) })
public class FirstsSeconds{
@EmbeddedId
private FirstsSecondsId primaryKey = new FirstsSecondsId();
@Column(name = "extra", nullable = false)
private String extra;
...
}
所以ID類:
@Embeddable
public class FirstsSecondsId {
@ManyToOne
private First first;
@ManyToOne
private Second second;
...
}
最後得到HQL結果,我創建領域新的類,我想: 公共類NewObject的
public CargoOrder(String firstDescription, String fsExtra) {
this.firstDescription = firstDescription;
this.fsExtra = fsExtra;
}
...
首先我想從FirstsSecond首先descrption和額外的,所以這是我的查詢與JOIN fr.seconds爲FS:
@Query("SELECT new com.mypackage.NewObject("
+ "fr.description as firstDescription, fs.extra as fsExtra) "
+ "FROM First as fr"
+ "JOIN fr.seconds as fs")
public List<NewObject> findManyToMany();
但我不結果:(......在這種情況下,我必須指定where條件?
@Query("SELECT new com.mypackage.NewObject("
+ "fr.description as firstDescription, fs.extra as fsExtra) "
+ "FROM First as fr"
+ "JOIN fr.seconds as fs WHERE fr.first = fs.primaryKey.first")
public List<NewObject> findManyToMany();
那上不能編譯JOIN fr.seconds爲fs的WHERE fr.first = fs.primaryKey.first。 ..
親切的問候。