0

私は休止状態の 3.5.4-final を使用しています。私は2つのJPAクラスを持っています。

    @Entity
    @Table(name = "SPI_V_OP_OBJ_SUBJECT_VR")
    public class OpSubject_vr extends PersistenceEntity implements Serializable {

        private static final long serialVersionUID = 1858749317461707015L;
        /** id */
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name = "ID",
                nullable = false)
        private Long id;

        /** name */
        @Column(name = "F_NAME")
        private String f_name;


        /** type */
        @Column(name = "SUBJECT_TYPE")
        private String subject_type;


        /** okved */
        @ManyToMany
        @JoinTable(name = "SPI_V_OP_OBJ_SUBJECT_VR_OKVED",
                   joinColumns = {@JoinColumn(name = "OBJECT_ID",
                                              referencedColumnName = "ID",
                                              nullable = false)},
                   inverseJoinColumns = {@JoinColumn(name = "SPR_ID",
                                                     referencedColumnName = "ID",
                                                     nullable = false)})
        private List<OpSprOkved> okved_id_mult = new ArrayList<>();
}

@Entity
@Table(name = "SPI_V_OP_SPR_OKVED")
public class OpSprOkved extends PersistenceEntity implements Serializable {

    /** id */
    @Id
    @Column(name = "ID", nullable = false)
    private Long id;

    /** code*/
    @Column(name = "CODE")
    private String code;

    /** name*/
    @Column(name = "name")
    private String name;
}

属性 okved_id_mult は複数です。空の属性 okved_id_mult を持つオブジェクト OpSubject_vr を選択したいと考えています。

私は試した

select ent from OpSubject_vr ent where okved_id_mult is empty; (hibernate error)

select ent from OpSubject_vr ent where okved_id_mult is null; (hibernate error)

select distinct ent from OpSubject_vr ent join ent.okved_id_mult i1 where i1.code is null;(return 0 objects)

4

2 に答える 2

0
  1. クエリは問題ありませんが、okved_id_mult を ent.okved_id_mult として修飾する必要があります。
  2. コレクション属性を制限することは違法です。
  3. 左結合を使用するには、クエリを変更する必要があります。次に、最初のクエリと論理的に同等です。

https://github.com/BatooOrg/BatooJPA/tree/master/community/src/test/java/org/batoo/jpa/community/test/t2でテスト ケースを参照してください。

于 2012-10-10T07:01:57.537 に答える