我有一个运行良好的 sql 语句。但是在我的 webapp 中使用 play 2.1 实现时,我得到了这个错误:javax.persistence.PersistenceException: Query throw SQLException:Column Index out of range, 0 < 1。
我在这里发现了这个问题:Error execution MySQL query via ebean using RawSql 但后来我遇到了其他异常。
我正在尝试获取包含标签列表的标记线程(与堆栈溢出相同)。这里是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;
}
经过大量尝试和沮丧后,我希望有人对此有所提示或解决方案。