静的メソッドサービスに移植呼び出す方法
{クラスに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)。