[ 
https://issues.apache.org/jira/browse/OPENJPA-249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Gajdos updated OPENJPA-249:
----------------------------------

    Description: 
Situation description:
@Entity
public class Application {
...
        @ManyToOne(optional = false)
        @JoinColumn(name = "C_APPLICATION_STATUS",
                nullable = false)
        private ApplicationStatus applicationStatus;
...}

@Entity
public class ApplicationStatus {
        public static enum Code {
                created
        }
        @Id
        @Column(name = "C_CODE")
        @Enumerated(EnumType.STRING)
        private Code code;
}
And now the problem:
When executing query "SELECT a FROM Application a WHERE a.applicationStatus = 
:status" with parameter q.setParameter("status", ApplicationStatus status); 
everything works fine. 
But when trying to call the query like "SELECT a FROM Application a WHERE 
a.applicationStatus.code = package.ApplicationStatus.Code.created " it fails 
with: Attempt to query field "package.ApplicationStatus.Code.waiting" from 
non-entity class "null".
Is there any way to create a query with built in enum value? I found a similar 
issue on http://forums.oracle.com/forums/thread.jspa?threadID=506389&tstart=45

  was:
Situation description:
@Entity
public class Application {
...
        @ManyToOne(optional = false)
        @JoinColumn(name = "C_APPLICATION_STATUS",
                nullable = false)
        private ApplicationStatus applicationStatus;
...}

@Entity
public class ApplicationStatus {
        public static enum Code {
                created
        }
        @Id
        @Column(name = "C_CODE")
        @Enumerated(EnumType.STRING)
        private Code code;
}
And now the problem:
When executing query "SELECT a FROM Application a WHERE a.applicationStatus = 
:status" with parameter q.setParameter("status", ApplicationStatus status); 
everything works fine. 
But when trying to call the query like "SELECT a FROM Application a WHERE 
a.applicationStatus.code = :package.ApplicationStatus.Code.created " it fails 
with: Attempt to query field "package.ApplicationStatus.Code.waiting" from 
non-entity class "null".
Is there any way to create a query with built in enum value? I found a similar 
issue on http://forums.oracle.com/forums/thread.jspa?threadID=506389&tstart=45


I solved it with "SELECT a FROM Application a WHERE a.applicationStatus.code = 
package.ApplicationStatus$Code.created ". It looks like it's using compiled 
class name.

> problem using enum with @Enumerated annotation in Query
> -------------------------------------------------------
>
>                 Key: OPENJPA-249
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-249
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: query
>    Affects Versions: 0.9.7
>         Environment: Windows XP, WAS 6.1
>            Reporter: Daniel Gajdos
>
> Situation description:
> @Entity
> public class Application {
> ...
>       @ManyToOne(optional = false)
>       @JoinColumn(name = "C_APPLICATION_STATUS",
>               nullable = false)
>       private ApplicationStatus applicationStatus;
> ...}
> @Entity
> public class ApplicationStatus {
>       public static enum Code {
>               created
>       }
>       @Id
>       @Column(name = "C_CODE")
>       @Enumerated(EnumType.STRING)
>       private Code code;
> }
> And now the problem:
> When executing query "SELECT a FROM Application a WHERE a.applicationStatus = 
> :status" with parameter q.setParameter("status", ApplicationStatus status); 
> everything works fine. 
> But when trying to call the query like "SELECT a FROM Application a WHERE 
> a.applicationStatus.code = package.ApplicationStatus.Code.created " it fails 
> with: Attempt to query field "package.ApplicationStatus.Code.waiting" from 
> non-entity class "null".
> Is there any way to create a query with built in enum value? I found a 
> similar issue on 
> http://forums.oracle.com/forums/thread.jspa?threadID=506389&tstart=45

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to