2 Replies Latest reply on Aug 14, 2006 2:12 AM by raja05

    EJB3 - load Sql Query From Xml Deployment Descriptor

      hi all,
      i'm trying working with ejb3 using xml eployment Descriptor.
      here is my small example:
      Table in Oracle DB

      CREATE TABLE "TEST"."PERSON"
       ( "ID" NUMBER NOT NULL ENABLE,
       "NAME" VARCHAR2(255),
       "SURNAME" VARCHAR2(255),
       "AGE" NUMBER,
       CONSTRAINT "PK_ID" PRIMARY KEY ("ID")
       )
      

      EJB3 Entity Bean
      import [...]
      @Entity()
      @Table(name="PERSON", schema="TEST")
      public class PERSON implements Serializable {
       //default serial version id, required for serializable classes.
       private static final long serialVersionUID = 1L;
       private Long id;
       private Long age;
       private String name;
       private String surname;
      
       public Test() {
       }
      
       @Id()
       @SequenceGenerator(name = "idGenerator", sequenceName = "SEQ_ID")
       @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idGenerator")
       @Column(name="ID", unique=true, nullable=false, precision=22)
       public Long getId() {
       return this.id;
       }
       public void setId(Long id) {
       this.id = id;
       }
      
       @Basic()
       @Column(name="AGE", precision=22)
       public Long getAge() {
       return this.age;
       }
       public void setAge(Long age) {
       this.age = age;
       }
      
       @Basic()
       @Column(name="NAME", length=255)
       public String getName() {
       return this.name;
       }
       public void setName(String name) {
       this.name = name;
       }
      
       @Basic()
       @Column(name="SURNAME", length=255)
       public String getSurname() {
       return this.surname;
       }
       public void setSurname(String surname) {
       this.surname = surname;
       }
      }
      

      and my orm.xml file

      <?xml version="1.0" encoding="UTF-8"?>
      <entity-mappings
       xmlns="http://java.sun.com/xml/ns/persistence"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
       version="1.0">
       <package>com.magti.businesslayer.ejb3entity.oracle</package>
       <named-native-query name="getPersons">select * from Test</named-native-query>
       <entity class="PERSON">
       <primary-key-join-column name="id"/>
       <table name="PERSON">
       <unique-constraint>
       <column-name>id</column-name>
       <column-name>age</column-name>
       <column-name>name</column-name>
       <column-name>surname</column-name>
       </unique-constraint>
       </table>
       </entity>
      </entity-mappings>
      


      how i can load this sql query in my session fasade bean ?
      i tryed this but it does not working :

      Persons Session Fasade Bean
      @Stateful
      @TransactionManagement(TransactionManagementType.BEAN)
      @Remote(Fasade.class)
      public class PersonFasadeBean implements PersonFasade
      {
       @PersistenceContext(unitName = "TEST")
       private EntityManager oracleManager;
       @Resource public UserTransaction utx;
       public Test[] getTests() throws IllegalStateException, SecurityException, SystemException {
       List _list = oracleManager.createNativeQuery("getTests").getResultList();
       System.out.println(_list.size());
       return null;
       }
      }
      


      and i got an errot like this :
      04:17:19,984 WARN [JDBCExceptionReporter] SQL Error: 900, SQLState: 42000
      04:17:19,984 ERROR [JDBCExceptionReporter] ORA-00900: invalid SQL statement
      


      can anybody help me :(
      is there eny docs about this ?
      thanks.