Javaクエリの仕様策定中②

Javaでのデータ検索における仕様を考えているのだがこのような書き方はどうだろう。
誰か意見下さい。

現在のところの仕様②:

メリット:
 ・タイプセーフに記述できる。
 ・準備するのはEntity Beanのみでよい。
 ・ID列を意識しなくてよい。

デメリット:
 ・パブリックフィールドは使用できない。
 ・DIコンテナからEntityを生成・取得できない。


こう書くと

	final Expression e = new Expression(); //式マネージャ
	final Shop_list s = e.createSearchCondition(Shop_list.class); //primary_table
	final Office_list o = e.createRelation(Office_list.class); //joined_table
		
	s.setOffice_cd("100");
	e.$(s.getDelete_flag()).in("1","2");	
		
        //or ブロックパート1
	e.new OrBlock(){{
		
		e.$(s.getShop_code()).range(100, 300);
		e.$(s.getOffice_cd()).includewith("ターゲット");
			
	}}.end();
		
       // or ブロックパート2
	e.or_block_begin();
			
		e.$(s.getShop_code()).range(100, 300);
		e.$(s.getOffice_cd()).includewith("ターゲット");
					
	e.block_end();
		
       // where clause の joined table とのバインド パート1
	e.equal(s.getDelete_flag(), o.getDelete_flag());
		
    // where clause の joined table とのバインド パート2
	s.getDelete_flag();
	e.equal();
	o.getDelete_flag();
		
		
    //joined tableとのバインド join on〜
	e.$(s.getDelete_flag()).bind(o.getDelete_flag());
    //joined tableとのヴァリューバインド
	e.$(o.getOffice_cd()).bindValue("100");


結果:
こうなる

Shop_list.Office_cd = 100 
 AND Shop_list.Delete_flag IN ( 1 , 2 ) 
 OR ( Shop_list.Shop_code BETWEEN 100 AND 100 
   AND Shop_list.Office_cd '%ターゲット%' ) 
 OR ( Shop_list.Shop_code BETWEEN 100 AND 100 
   AND Shop_list.Office_cd '%ターゲット%' ) 
 AND Shop_list.Delete_flag = Office_list.Delete_flag 
 AND Shop_list.Delete_flag = Office_list.Delete_flag 

JOIN条件部分

Shop_list.Delete_flag = Office_list.Delete_flag 
AND Office_list.Delete_flag = '100'