sql >> データベース >  >> RDS >> Mysql

JPAでコレクションのサイズを制限する

    このコードを使用して、このルールを手動で適用します。主なアイデアは、クライアントがパブリックメソッド(addB())によってのみコンテンツを変更できるように、コレクションBを適切にカプセル化する必要があるということです。 )。このメソッド内でこのルールを確認するだけです(addB() )コレクションB内のエントリの数が値を超えないようにするため。

    A:

    @Entity
    public class A {
    
    
        public static int MAX_NUM_B = 4;
    
        @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
        private Set<B> b= new LinkedHashSet<B>();
    
        public void addB(B b) {
            if (this.b.size() == MAX_NUM_B) {
                Iterator<B> it = this.b.iterator();
                it.next();
                it.remove();
            }
            this.b.add(b);
        }
    
        public Set<B> getB() {
            return Collections.unmodifiableSet(this.b);
        }
    }
    

    B:

    @Entity 
    public class B{
    
        @ManyToOne
        private A a;
    }
    

    主なポイント:

    • Aは関係の所有者である必要があります。
    • Aでは、クライアントがaddB(B b)に実装されているチェックロジックをバイパスできるため、単にBを返さないでください。 内容を自由に変更できます。代わりに、変更できないBのビューを返します。
    • @OneToManyで、orphanRemovalを設定します trueにすると、対応するインスタンスがBコレクションから削除された後にBのDBレコードを削除するようにJPAに指示します。


    1. 1つのフォームを使用して複数のテーブルにデータを挿入します

    2. t-sql selectは、年の範囲内のすべての月を取得します

    3. PHPで非常に大きなXMLファイルを解析する

    4. MySQL TRIM関数は改行やキャリッジリターンをトリミングしませんか?