2016-12-13 11 views
1

は、私は論理的に削除フィールドを持つテーブルを持っている -スプリングデータのjpaクエリの値をデフォルト設定していますか?

CREATE TABLE DOCUMENT 
(
    ID VARCHAR2(255 BYTE) NOT NULL, 
    DOCUMENT_NAME VARCHAR2(255 BYTE), 
    DELETED NUMBER 
) 

そして私はJPAオブジェクトの作成 -

public interface DocumentRepository extends CrudRepository<Document, String> { 
    Document findByIdAndDeleted(String id, Boolean deleted); 
} 

私はやりたいと思っています - リポジトリと

@Entity(name = "DOCUMENT") 
public class Document { 

    @Column(name = "ID") 
    private String id; 

    @Column(name = "DOCUMENT_NAME") 
    private String name; 

    @Column(name = "DELETED") 
    private Boolean deleted; 

    // other params 

} 

を削除されていないドキュメントのルックアップがあるため、私のクエリをdeleted = falseにデフォルト設定する方法があったかどうか、そして

// where deleted = false 
Document findById(String id); 

答えて

3

それは厄介かもしれませんが、私はあなたが春のデータリポジトリの

Document findByIdAndDeletedIsFalse(String id); 

reference)を使用することができると信じて。

1

Hibernateを使用する場合は、クラスに@Whereアノテーションを追加できます。このように:

@Where(clause="deleted <> '1'") 
@Entity(name = "DOCUMENT") 
public class Document { 

    @Column(name = "ID") 
    private String id; 

    @Column(name = "DOCUMENT_NAME") 
    private String name; 

    @Column(name = "DELETED") 
    private Boolean deleted; 

    // other params 

} 

http://featurenotbug.com/2009/07/soft-deletes-using-hibernate-annotations/をご覧ください。

関連する問題