[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-6280) JPA criteria API don't bind numeric field

gwa (JIRA) noreply at atlassian.com
Thu Jun 2 06:32:24 EDT 2011


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-6280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=42460#action_42460 ] 

gwa commented on HHH-6280:
--------------------------

I've forgot to mention that the problem come from the org.hibernate.ejb.criteria.expression.LiteralExpression class

in the render method, the code :
{code:java}
     if ( ValueHandlerFactory.isNumeric( literal ) ) {
         return ValueHandlerFactory.determineAppropriateHandler( (Class) literal.getClass() ).render( literal );
    }
{code}
return directly the value of the expression instead of creating a binded parameter.

> JPA criteria API don't bind numeric field
> -----------------------------------------
>
>                 Key: HHH-6280
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6280
>             Project: Hibernate Core
>          Issue Type: Improvement
>          Components: entity-manager
>    Affects Versions: 3.5.0.Beta-1, 3.5.0-Beta-2, 3.5.0-Beta-3, 3.5.0-Beta-4, 3.5.0-CR-1, 3.5.0-CR-2, 3.5.0-Final, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.6.0.Beta1, 3.6.0.Beta2, 3.5.5, 3.6.0.Beta3, 3.6.0.Beta4, 3.5.6, 3.6.0.CR1, 3.6.0.CR2, 3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4
>            Reporter: gwa
>
> When you use JPA criteria API, the numeric value are not binded but are directly set in the SQL instead. 
> eq: you have a generated SQL like:
> select ... from ... where age=12;
> instead of 
> select ... from ... where age=?;
> With '12' as parameter.  
> when you test the following code:
> {code:java}
> @Entity
> public class User {
> 	@Id
> 	private int id;
> 	private int age;
>         ...
> }
> {code}
> {code:java}
>     CriteriaBuilder builder=em.getCriteriaBuilder();
>     CriteriaQuery<User> query=builder.createQuery(User.class);
>     Root<User> root=query.from(User.class);
>     query.select(root).where(builder.equal(root.get("age"),12));
>     em.createQuery(query).getResultList();
> {code}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list