У меня есть следующие 2 класса JPA:
@Entity
public class AnalysisPolicy {
private Set rules;
//stuff omitted
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public Set getRules() {
return rules;
}
}
@Entity
public class AnalysisRule {
//stuff omitted
}
и следующий запрос JPQL: select p from AnalysisPolicy p, AnalysisRule r where r.id=:ruleId and r in p.rules
, который принимает один параметр, ruleId, типа java.util.UUID (это класс, который я использую)как @Id для всех моих сущностей).пытаясь выполнить запрос, я получаю следующие результаты:
Hibernate:
/* select
p
from
AnalysisPolicy p,
AnalysisRule r
where
r.id=:ruleId
and r in p.rules */ select
analysispo0_.f_id as f1_12_,
analysispo0_.f_lastmodified as f2_12_,
analysispo0_.global as global12_
from
AnalysisPolicy analysispo0_ cross
join
AnalysisRule analysisru1_ cross
join
AnalysisPolicy_AnalysisRule rules2_, AnalysisRule analysisru3_
where
analysispo0_.f_id=rules2_.AnalysisPolicy_f_id
and rules2_.rules_f_id=analysisru3_.f_id
and analysisru1_.f_id=?
and (
analysisru1_.f_id in (
.
)
) limit ?
[org.hibernate.util.JDBCExceptionReporter] SQL Error: 0, SQLState: 42601
[org.hibernate.util.JDBCExceptionReporter] ERROR: syntax error at or near "."
, что означает, что мой JPQL принят hibernate, но по какой-то причине выдаваемый им SQL-код недействителен ("analysisru1_.f_id in (.)"часть).
я использую hibernate 3.6 и postgresql 9 для БД.что я делаю не так?