Can't figure out why the error.
Using:
postgresql 8.1
hibernate-annotations-3.1beta8
hibernate-entitymanager-3.1beta6
jboss seam 1.0 beta2
I'm using an entity manager. I am trying to query my user object:
Code:
@AccessType("field")
@Entity
@Table(name="site_user")
@Name("user")
@Scope(ScopeType.SESSION)
@SequenceGenerator(name="seq", sequenceName="site_user_seq")
public class User
implements java.io.Serializable
{
private final static long serialVersionUID = 1l;
// Fields
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq")
private Integer id;
@Basic
@NotNull
@Length(max=25,min=4)
private String username;
...
Here is my JSF method that is throwing the exception:
Code:
@Create
public User getCurrentUser()
{
Principal userPrincipal =
((HttpServletRequest)facesContext.getExternalContext().getRequest())
.getUserPrincipal();
if (userPrincipal == null) return null;
if (currentUser == null)
{
currentUser = (User)entityManager.createQuery(
"select u from User " +
"where u.username = :username")
.setParameter("username", userPrincipal.getName())
.getSingleResult();
}
return currentUser;
}
Tomcat/Seam spit so many errors out that I cannot get any generated SQL (I don't think it got that far though).
Here is the relevant part of the error:
Code:
Caused by: java.lang.NullPointerException
at org.hibernate.hql.ast.tree.IdentNode.resolveAsNakedComponentPropertyRefLHS(IdentNode.java:195)
at org.hibernate.hql.ast.tree.IdentNode.resolve(IdentNode.java:85)
at org.hibernate.hql.ast.tree.DotNode.resolveFirstChild(DotNode.java:139)
at org.hibernate.hql.ast.HqlSqlWalker.lookupProperty(HqlSqlWalker.java:397)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.addrExpr(HqlSqlBaseWalker.java:4316)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1211)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4032)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3518)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1758)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:776)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:577)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:134)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:113)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1602)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:54)
at org.bethanyefree.beans.UserBeanAction.getCurrentUser(UserBeanAction.java:65)
...
My user has a "getUsername()" as well as the field being mapped with the same name ("username"). I cannot see what is wrong with that EBQL. Would appreciate it if someone can see the problem.
Thanks,
Andrew