org.apache.openjpa.persistence.ArgumentException when using query "SELECT 
Teacher t, IN(t.courses) c WHERE c = ?"
-----------------------------------------------------------------------------------------------------------------

                 Key: OPENJPA-190
                 URL: https://issues.apache.org/jira/browse/OPENJPA-190
             Project: OpenJPA
          Issue Type: Bug
          Components: kernel
    Affects Versions: 0.9.6
         Environment: JDK 1.5.0_09, Spring 2.0.3, OpenJPA 0.9.6
            Reporter: Maxim Butov


ENTITIES:

@Entity(name = "Teacher")
@Table(name = "teacher")
public class Teacher extends AbstractEntity<Integer> {

    @Id
    @Column(name = "teacher_id")
    private Integer id;

    @Column(name = "name")
    private String name;

    @OneToMany(targetEntity = Course.class, mappedBy = "teacher")
    private Set<Course> courses;
}

@Entity(name = "Course")
@Table(name = "course")
public class Course extends AbstractEntity<Integer> {

    @Id
    @Column(name = "course_id")
    private Integer id;

    @Column(name = "code")
    private String code;

    @Column(name = "description")
    private String description;

    @ManyToOne
    @JoinColumn(name = "teacher_id")
    private Teacher teacher;

    @OneToMany(targetEntity = Enrolment.class, mappedBy = "course")
    private Set<Enrolment> enrolments;
}

QUERY:

SELECT t FROM Teacher t, IN(t.courses) c WHERE c = ?1

LOG:

20:21:48.265 ERROR AbstractJpaCriteriaTests Pattern query did not execute 
succesfully
org.springframework.dao.InvalidDataAccessApiUsageException: The parameter "0" 
is of type "net.sf.jpacriteria.Course", but the declaration in the query is for 
type "java.util.Set". ; nested exception is <4|false|0.0.0> 
org.apache.openjpa.persistence.ArgumentException: The parameter "0" is of type 
"net.sf.jpacriteria.Course", but the declaration in the query is for type 
"java.util.Set". 
Caused by: 
<4|false|0.0.0> org.apache.openjpa.persistence.ArgumentException: The parameter 
"0" is of type "net.sf.jpacriteria.Course", but the declaration in the query is 
for type "java.util.Set". 
        at 
org.apache.openjpa.persistence.QueryImpl.validateParameter(QueryImpl.java:245)
        at 
org.apache.openjpa.persistence.QueryImpl.validateParameters(QueryImpl.java:225)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:206)
        at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:251)
        at 
org.springframework.orm.jpa.JpaTemplate$9.doInJpa(JpaTemplate.java:313)
        at org.springframework.orm.jpa.JpaTemplate.execute(JpaTemplate.java:191)
        at 
org.springframework.orm.jpa.JpaTemplate.executeFind(JpaTemplate.java:158)
        at org.springframework.orm.jpa.JpaTemplate.find(JpaTemplate.java:305)
        at 
net.sf.jpacriteria.AbstractJpaCriteriaTests.assertCorrect(AbstractJpaCriteriaTests.java:189)
        at 
net.sf.jpacriteria.AbstractCriterionTests.testNullPropertyEq(AbstractCriterionTests.java:235)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at junit.framework.TestCase.runTest(TestCase.java:168)
        at junit.framework.TestCase.runBare(TestCase.java:134)
        at 
org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)
        at 
org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.access$001(AbstractAnnotationAwareTransactionalTests.java:47)
        at 
org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests$1.run(AbstractAnnotationAwareTransactionalTests.java:115)
        at 
org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTest(AbstractAnnotationAwareTransactionalTests.java:180)
        at 
org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runTestTimed(AbstractAnnotationAwareTransactionalTests.java:153)
        at 
org.springframework.test.annotation.AbstractAnnotationAwareTransactionalTests.runBare(AbstractAnnotationAwareTransactionalTests.java:111)
        at 
org.springframework.test.jpa.AbstractJpaTests.runBare(AbstractJpaTests.java:159)
        at 
org.springframework.test.jpa.AbstractJpaTests.runBare(AbstractJpaTests.java:239)
        at junit.framework.TestResult$1.protect(TestResult.java:110)
        at junit.framework.TestResult.runProtected(TestResult.java:128)
        at junit.framework.TestResult.run(TestResult.java:113)
        at junit.framework.TestCase.run(TestCase.java:124)
        at junit.framework.TestSuite.runTest(TestSuite.java:232)
        at junit.framework.TestSuite.run(TestSuite.java:227)
        at junit.textui.TestRunner.doRun(TestRunner.java:116)
        at 
com.intellij.rt.execution.junit.IdeaTestRunner.doRun(IdeaTestRunner.java:69)
        at junit.textui.TestRunner.doRun(TestRunner.java:109)
        at 
com.intellij.rt.execution.junit.IdeaTestRunner.startRunnerWithArgs(IdeaTestRunner.java:24)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:118)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)


-- 
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