私はかなりうまく機能するSQLステートメントを持っています。しかし、play 2.1 で動作する Web アプリケーションに実装すると、次のエラーが発生します: javax.persistence.PersistenceException: クエリが SQLException:Column Index out of range, 0 < 1 をスローしました。
ここでこの質問を見つけました: RawSql を使用して ebean を介して MySQL クエリを実行中にエラーが発生しまし たが、他の例外が発生しました。
タグのリストを含むタグ付きスレッドを取得しようとしています (スタック オーバーフローと同じです)。ここにSQL文
SELECT t.topic
FROM topic t
WHERE 3 = (SELECT COUNT( DISTINCT ta.id )
FROM topic_tag tt
INNER JOIN tag ta ON ta.id = tt.tag_id
WHERE ta.name IN ('children', 'spain','new')
AND tt.topic_id = t.id )
プレイ中、私はこれを行います:
RawSql rawSql = RawSqlBuilder.unparsed(sqlString).create();
result = find.setRawSql(rawSql).findList();
その後、範囲外の例外が発生しました。その後、列マッピングを設定しようとします:
RawSql rawSql = RawSqlBuilder.unparsed(sqlString)
.columnMapping("t.topic","topic")
.columnMapping("t.id","id")
.columnMapping("ta.name","tagList.name")
.columnMapping("ta.id","tagList.id")
.create();
今、私はヌルポインタ例外を取得します. おそらく、ebean がそこからクエリを作成できないためです。
ここに私のモデルからのいくつかのコード:
@Entity
public class Topic extends Model{
@Id
public Long id;
@Required
public String topic;
@ManyToMany
public List<Tag> tagList;
}
@Entity
public class Tag extends Model {
@Id
public long id;
@Required
public String name;
}
何度も試行錯誤した後、誰かがこれに対するヒントまたは解決策を見つけてくれることを願っています.