サービスとどのように注入の静的メソッドを呼び出すために、仕様に定義された関数のJPAについてオラクルデコードを達成するために

静的メソッドサービスに移植呼び出す方法

{クラスにClassA公共

  公共
静的にClassAクラスとクラスA;

  @Resource
  、プライベートサービスサービス
  の静的メソッドでその注入方法は、それが呼び出すことができるので、静的メソッドをロードする前に、//起動時にエンジニアリングの負荷の原則、 @PostConstruct
公共 無効にINITを() { クラスとクラスA = この;
     classA.service-SERVICE =;
}
}

JPAカスタム関数の仕様

自己定義されたソースの方法は、ノートは、言いません
。1
/ ** 2 表現ANデータベースの実行を作成します*のために 。3 *機能。 。4 * @param name関数名 。5 * @paramのタイプ結果タイプは期待 。6 * @paramの引数関数の引数 7 * @returnの表現 8 * / 9 <T>式<T>の関数(文字列名、クラス<T> タイプの、 10式...引数<?>);
我々は、このクラス、について話
ParameterizedFunctionExpression、ダイナミック達成するためにどのようにソート条件の組み合わせをデコードを実現

<T>式<T>の関数(文字列名、クラス<T>タイプ、
式...引数<?>);

 

彼はクラスのコンストラクタのParameterizedFunctionExpressionを呼び出している; //これは実際に呼び出す関数の実装であります

@Override
公共<T>式<T>の関数(文字列名、クラス<T>戻り値の、式...引数<?>){
返す新しいParameterizedFunctionExpression <T>(これ、戻り値の、名前、引数);
}

 

// ParameterizedFunctionExpressionコンストラクタ

公共ParameterizedFunctionExpression(
CriteriaBuilderImpl criteriaBuilder、
クラス<X>のJavaType、
文字列functionNameを、
式... argumentExpressions <?>){
スーパー(criteriaBuilder、JavaTypeが、functionNameを);
this.argumentExpressions =は、Arrays.asList(argumentExpressions)。
this.isStandardJpaFunction = STANDARD_JPA_FUNCTION_NAMES.contains(functionName.toUpperCase(Locale.ROOT))。
}

 

//我々は達成します

式<整数>式= NULL;

//店舗発注条件

?一覧<式<>> argumentExpressions =新しいのArrayList <式<>>();?

//ソートフィールド

argumentExpressions.add(cb.literal( "グレード");

//ソート順
argumentExpressions.add(cb.literal(1));

式=新しいParameterizedFunctionExpression <整数>((CriteriaBuilderImpl)CB、Integer.class、 "デコード"、
argumentExpressions)。

 

おすすめ

転載: www.cnblogs.com/xiaoshahai/p/11516870.html