[解決済み] JPA getSingleResult() or null
2022-05-01 21:50:29
質問
私は
insertOrUpdate
を挿入するメソッドです。
Entity
が存在しない場合はそれを更新し、存在する場合はそれを更新します。これを可能にするために、私は
findByIdAndForeignKey
を返した場合
null
を挿入し、そうでない場合は更新します。問題は、それが存在するかどうかをどのように確認するかということです。そこで、私は
getSingleResult
. しかし、それは例外を投げる
public Profile findByUserNameAndPropertyName(String userName, String propertyName) {
String namedQuery = Profile.class.getSimpleName() + ".findByUserNameAndPropertyName";
Query query = entityManager.createNamedQuery(namedQuery);
query.setParameter("name", userName);
query.setParameter("propName", propertyName);
Object result = query.getSingleResult();
if (result == null) return null;
return (Profile) result;
}
しかし
getSingleResult
を投げます。
Exception
.
ありがとうございます
解決方法は?
例外を発生させる方法
getSingleResult()
は、見つからないことを示します。個人的には、この種のAPIには我慢がならない。何のメリットもないのに、偽りの例外処理を強いられる。コードをtry-catchブロックで包むだけでいい。
あるいは、リストを照会して、それが空であるかどうかを確認することもできます。これなら例外は発生しません。実際、主キー検索を行っていないので、技術的には複数の結果があり得ます(たとえ、一方、両方、または外部キーや制約の組み合わせが実際にはこれを不可能にしていても)。
関連
-
[解決済み] Spring Data JPAにおけるCrudRepositoryとJpaRepositoryのインターフェースの違いは何ですか?
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
JQuery DataTable 详解
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] JPA EntityManager。なぜmerge()ではなくpersist()を使うのか?
-
[解決済み】JPA JoinColumnとmappedByの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
Java Exceptionが発生しました エラー解決
-
java の例外が発生しました java
-
IllegalArgumentException この例外を解決する方法
-
[解決済み] javax.persistence.NoResultException: クエリに対応するエンティティが見つかりませんでした。
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
eclipseにプロジェクトをインポートした後、Editorにmain typeが含まれない問題
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException: 1
-
xxx:jarのアーティファクトディスクリプタの読み込みに失敗した問題は解決しました。
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a