[ 
https://issues.apache.org/jira/browse/TAP5-1340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13088849#comment-13088849
 ] 

Robert Zeigler commented on TAP5-1340:
--------------------------------------

ValueEncoders aren't a chain, so there's no "passing" going on.  
ValueEncoderSource uses a MappedConfiguration to map from the type of a value 
to the encoder to use, attempting to match the type as specifically as 
possible. So the search for the correct encoder happens before 
HibernateEntityValueEncoder is ever called, and only one encoder is ever 
attempted per value.

You need to override the contribution for your entity type provided by the 
hibernate module with your custom encoder.


> HibernateEntityValueEncoder shouldn't throw an exception when the entity 
> being encoded isn't persisted yet
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: TAP5-1340
>                 URL: https://issues.apache.org/jira/browse/TAP5-1340
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: tapestry-hibernate
>    Affects Versions: 5.2.3
>            Reporter: Hugo Palma
>
> The code:
> if (id == null)
>             throw new IllegalStateException(String.format(
>                     "Entity %s has an %s property of null; this probably 
> means that it has not been persisted yet.",
>                     value, idPropertyName));
> means that i can never encode an entity class before it's persisted. The 
> correct behaviour should be:
> 1. HibernateEntityValueEncoder - if id is not null proceed with encoding.
> 2. HibernateEntityValueEncoder - if id is null then pass object to the next 
> encoder on the chain.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to