私はSQLで長年の経験があります。私は Hibernate を初めて使用します。Hibernate の基本を理解しました。以下のロジックが必要です。ただし、会社の詳細が明らかにならないようにテーブル名を変更しました。また、SQL は 1 つの SQL ステートメントとして実行する必要があることに注意してください。これが実行されているときに、他のアプリケーションがテーブルを更新する可能性があります。他のアプリケーションが既にそれらを使用して運用されているため、テーブルのデザインを変更することはできません。
誰かが Hibernate で以下の更新を行う方法を示してもらえますか? createNativeQuery
オプションですか??
update
PERSON P
set
P.STATUS = 'Happy'
where
P.PK_ID = :person_id
and
(
select count(1)
from WORK_JOBS WJ
where WJ.RESOLVED_STATUS is null
) = 0
and
(
select count(1)
from EXPENSES EX
where EX.COST > :max_exp_cost
) = 0
;
簡単なテーブル定義を以下に示します。
create table PERSON
(
PK_ID NUMBER NOT NULL,
LAST_NAME VARCHAR2(100),
FIRST_NAME VARCHAR2(100),
PRIMARY KEY PK_ID
)
;
create table WORK_JOBS
(
PK_ID NUMBER NOT NULL,
SUMMARY VARCHAR2(100),
DESCRIPTION VARCHAR2(1000),
RESOLVED_STATUS VARCHAR2(50),
PRIMARY KEY PK_ID
)
;
create table EXPENSES
(
PK_ID NUMBER NOT NULL,
SUMMARY VARCHAR2(100),
DESCRIPTION VARCHAR2(1000),
COST DECIMAL(10,2),
PRIMARY KEY PK_ID
)
;