You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Bill Holloway <bi...@peoplepad.com> on 2008/11/16 10:29:52 UTC

T5+Hibernate: Entity class id variables cannot have leading underscores

To use the simplified page activation context for a hibernate entity
page (e.g., onActivate(Person p)...), it looks like the entity class'
primary key id field's name must match VERBATIM the text that follows
the word "get" in the getter (and "set" in the setter, probably).

I.e., this won't work:

@Id @GeneratedValue
private Long _id;

public Long getId()....

This fails because getId is not named get_id.  I normally use
underscore prefixes for my instance variables.  This is failing in
HibernateEntityValueEncoder on this line:

propertyAdapter =
propertyAccess.getAdapter(this.entityClass).getPropertyAdapter(idPropertyName);

It looks for an idPropertyName "_id" and doesn't find one because
according to the getter/setter pattern, the name is "id".  The
propertyAdapter is then null which throws an NPE on line 79:

Object id = typeCoercer.coerce(clientValue, propertyAdapter.getType());

Bill in Austin

-- 
Without coding you have no product
Without testing, no quality
Without refactoring, no future

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5+Hibernate: Entity class id variables cannot have leading underscores

Posted by SergeEby <sd...@hotmail.com>.
Hi,

This has nothing to do with Tapestry.

You have 2 options:
1) Use the @Column annotation on the _id field
@Id @GeneratedValue @Column(name="id") 
private Long _id;

2) Annotate the accessor methods


/Serge



Bill Holloway wrote:
> 
> To use the simplified page activation context for a hibernate entity
> page (e.g., onActivate(Person p)...), it looks like the entity class'
> primary key id field's name must match VERBATIM the text that follows
> the word "get" in the getter (and "set" in the setter, probably).
> 
> I.e., this won't work:
> 
> @Id @GeneratedValue
> private Long _id;
> 
> public Long getId()....
> 
> This fails because getId is not named get_id.  I normally use
> underscore prefixes for my instance variables.  This is failing in
> HibernateEntityValueEncoder on this line:
> 
> propertyAdapter =
> propertyAccess.getAdapter(this.entityClass).getPropertyAdapter(idPropertyName);
> 
> It looks for an idPropertyName "_id" and doesn't find one because
> according to the getter/setter pattern, the name is "id".  The
> propertyAdapter is then null which throws an NPE on line 79:
> 
> Object id = typeCoercer.coerce(clientValue, propertyAdapter.getType());
> 
> Bill in Austin
> 
> -- 
> Without coding you have no product
> Without testing, no quality
> Without refactoring, no future
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/T5%2BHibernate%3A-Entity-class-id-variables-cannot-have-leading-underscores-tp20523653p20527276.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org