I just started learning Jinq. Here's my Entity classes and the Dao.
@MappedSuperclass
public abstract class BaseModel{
@Id @GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, unique = true)
Long id;
@Column(columnDefinition = "datetime")
Timestamp created;
}
@Entity
@Table(name = "addresses")
public class Address extends BaseModel implements Serializable{
private String street, city, state, country, postcode;
@ManyToOne
private Person owner;
}
@Entity
@Table(name = "persons")
public class Person extends BaseModel implements Serializable{
private String surname;
private String givenName;
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
private List<Address> addresses = new ArrayList<>();
@Temporal(javax.persistence.TemporalType.DATE)
private Date birthDay;
}
The Dao class is as below:
public class PersonRepositoryImpl extends AbstractRepository<Person> implements PersonsRepository {
private final JinqStream<Person> allPeople = stream.streamAll(em, Person.class); @Override
public Person findById(Long id) {
return allPeople.where(p->p.getId() == id).findAny().get();
}
@Override
public List<Person> getByAddress(Address address) {
List<Person> people = addresses
.where(add->add.getCity().equals(address.getCity()))
.where(add->add.getState().equals(address.getState()))
.where(add->add.getStreet().equals(address.getStreet()))
.where(add->add.getCountry().equals(address.getCountry()))
.where(add->add.getPostcode().equals(address.getPostcode()))
.select(add->add.getOwner()).toList();
LOGGER.debug("People residing at Address:" + address + " " + people);
return people;
}}
Whenever I'm trying to get a List of people residing at a given address I'm getting the following exception:
15:42:05.378 [main] DEBUG o.h.hql.internal.ast.ErrorCounter - throwQueryException() : no errors
15:42:05.403 [main] DEBUG o.h.h.i.antlr.HqlSqlBaseWalker - select << begin [level=1, statement=select]
15:42:05.418 [main] DEBUG o.h.h.internal.ast.tree.FromElement - FromClause{level=1} : helene.labs.jinq.model.Address (A) -> address0_
15:42:05.420 [main] DEBUG o.h.h.i.ast.tree.FromReferenceNode - Resolved : A -> address0_.id
15:42:05.421 [main] DEBUG o.h.hql.internal.ast.tree.DotNode - getDataType() : owner -> org.hibernate.type.ManyToOneType(helene.labs.jinq.model.Person)
15:42:05.421 [main] DEBUG o.h.hql.internal.ast.tree.DotNode - dereferenceEntityJoin() : generating join for owner in helene.labs.jinq.model.Address (<no alias>) parent = [ {null} ]
15:42:05.423 [main] DEBUG o.h.h.internal.ast.tree.FromElement - FromClause{level=1} : helene.labs.jinq.model.Person (<no alias>) -> person1_
15:42:05.423 [main] DEBUG o.h.hql.internal.ast.tree.FromClause - addJoinByPathMap() : A.owner -> FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=persons,tableAlias=person1_,origin=addresses address0_,columns={address0_.owner_id ,className=helene.labs.jinq.model.Person}}
15:42:05.424 [main] DEBUG o.h.h.i.ast.tree.FromReferenceNode - Resolved : A.owner -> address0_.owner_id
15:42:05.427 [main] DEBUG o.h.h.i.ast.tree.FromReferenceNode - Resolved : A -> address0_.id
15:42:05.427 [main] DEBUG o.h.hql.internal.ast.tree.DotNode - getDataType() : city -> org.hibernate.type.StringType@5bf0d49
15:42:05.428 [main] DEBUG o.h.h.i.ast.tree.FromReferenceNode - Resolved : A.city -> address0_.city
15:42:05.429 [main] ERROR o.h.hql.internal.ast.ErrorCounter - <AST>:1:69: unexpected AST node: :
15:42:05.436 [main] ERROR o.h.hql.internal.ast.ErrorCounter - <AST>:1:69: unexpected AST node: :
antlr.NoViableAltException: unexpected AST node: :
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:5022) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.addrExprLhs(HqlSqlBaseWalker.java:5337) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4917) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1260) [hibernate-core-4.3.1.Final.jar:4.3.1.Final]