私は2つのエンティティークラスとリポジトリーを以下のように持っています。私はjpql selectクエリを作成しています。JPQL多対多問合せ
Subscription.java
@Entity
@Table(name="Subscription")
public class Subscription implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="SubscriptionId", nullable=false)
private Integer subscriptionId;
@Column(name="BaseProductId", nullable=false)
private Integer baseProductId;
@ManyToMany(fetch = FetchType.LAZY, mappedBy="subscription")
private List<Abc> abc;
}
Abc.java
@Entity
@Table(name="abc")
public class Abc implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="SubscriptionId", nullable=false)
private Integer id;
@ManyToMany(fetch = FetchType.LAZY)
@JoinColumn(name="id", referencedColumnName="BaseProductId", insertable = false, updatable = false, nullable = false)
private List<Subscription> subscription;
}
AbcRepository.java
@Repository
public interface AbcRepository extends JpaRepository<Abc, Integer> {
@Query(value="SELECT bpp FROM Abc bpp JOIN bpp.subscription s WHERE s.subscriptionId = ?1")
public List<Abc> findBppm(Integer a);
}
}
選択クエリの作成:
選択... ABCからインナーがabc_subscriptionを...内部結合が上...どこsubscripti2_.SubscriptionId =サブスクリプションsubscripti2_に参加BP_?
...:この場所には何かがあります。
私はabcとサブスクリプションに参加していますが、クエリでは_で区切られたもう1つのエンティティを作成しています。すなわちabc_subscription。
私が間違っていることは何ですか?前もって感謝します。
私はこのクエリと間違って何、それを得ることはありませんか?あなたは他の何かを期待していますか?あなたは名前についてただ気にしていますか? –
私は期待しているクエリです:select ... from abc bp_内側joinサブスクリプションsubscript2_ on ...ここでsubscripti2_.SubscriptionId =? – Akkave
なぜこれがこのようになると思いますか?あなたは 'ManyToMany'関係を使用していますので、デフォルトでは結合テーブル' Abc_subscription'で表されます。 –