2016-04-08 4 views
0

私は、訪問のためにオーナーに料金を請求し、どの訪問がSpring Pet Clinicの年齢プロジェクトに支払われたのかを示す方法を追加しました。今私は自分の口座に期限が過ぎている所有者のリストを作成しようとしています。私はに実行した問題は、所有者のテーブルです:@Formulaを使用したSpring Pet Clinicの拡張

CREATE TABLE visits (
    id   INTEGER IDENTITY PRIMARY KEY, 
    pet_id  INTEGER NOT NULL, 
    visit_date DATE, 
    description VARCHAR(255), 
    price  NUMERIC(5,2), 
    payment_due DATE, 
    billed  BOOLEAN, 
    paid  BOOLEAN 
); 

価格と納期が保たれている:

CREATE TABLE owners (
    id   INTEGER IDENTITY PRIMARY KEY, 
    first_name VARCHAR(30), 
    last_name VARCHAR_IGNORECASE(30), 
    address VARCHAR(255), 
    city  VARCHAR(80), 
    telephone VARCHAR(20) 
); 

は、訪問テーブルとは何の関係もありません。私は@Formulaアノテーションを使用することができれば、私は私がすべてセットになると思うが、私はそうのようOwnerクラスからSQLクエリを実行しようとすると:

WARN SqlExceptionHelper - SQL Error: -5501, SQLState: 42501 
ERROR SqlExceptionHelper - user lacks privilege or object not found: OWNER0_.PRICE 
WARN warn - Handler execution resulted in exception: org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement;... 

@Formula("(SELECT MAX(price) FROM visits)") 
private int balance; 

を私はエラーを取得します私は複雑なSQLステートメントをしたいと思いますが、上記の単純なものを動作させることさえできません。 @Functionアノテーションを働かせるだけの助けがあれば助けになります。

答えて

1

あなたはpriceがどこから来ている私は質問を編集し@Formula("(SELECT MAX(v.price) FROM visits v)")

+0

のようなので、指定する必要があります。アダムに感謝します。 –

+1

エラーメッセージに「特権がないかオブジェクトが見つかりません:OWNER0_.PRICE'」と表示されているので、所有者テーブルの 'price'列を探して、テーブル価格がクエリから来ていることを正確に指定する必要があります'@ Formula'の現在はそれを指定していません。私の推測では、オーナーテーブルはクエリで指定されていませんが、hibernateはそのテーブルのカラム名をデフォルトにするためにいくつかのことを行っています。だから私は明示的に価格がどこから来るのかを言って、エラーが変わったかどうかを見てそこから行くことを試みるだろう。 –

+0

私はテーブルにエイリアスを与えることについて考えていませんでした。私はあなたの答えを受け入れることを確認します。私は明日最初にそれを試してみます。 –

関連する問題