3 Replies Latest reply on Oct 6, 2005 11:44 AM by kiwiclive

    Hypersonic:Manual Database Table Creation:CreateException

      Hi Guys,

      Sorry if this sounds a stupid question, but I am having problems with manual database table creation with Hypersonic and entity beans.

      I have a simple entity bean. I can ask Jboss to automatically create a table when the bean is deployed by defining this in my jbosscmp-jdbc.xml file:

      <jbosscmp-jdbc>
       <defaults>
       <datasource>java:/DefaultDS</datasource>
       <datasource-mapping>Hypersonic SQL</datasource-mapping>
       <create-table>true</create-table>
       </defaults>
       <enterprise-beans>
       <entity>
       <ejb-name>Entity1Bean</ejb-name>
       <table-name>PERSON</table-name>
       <cmp-field>
      ....
      




      And then I run my client to create a bean, all works fine and the entity is created in the database (checked using DatabaseManager).

      If I drop the table and create it using SQL (actually from ant) using the following sql code:
      create text table person
      (
       pid varchar not null primary key,
       name varchar,
       age integer
      );
      commit;
      
      




      and change the jbosscmp-jdbc.xml entry:

      ....
      <create-table>false</create-table>
      ....
      
      



      Then redeploy the app, all seems fine until I run the client. When the client calls the create() method, I get this:

      CreateException:Could not create entity:java.sql.SQLException: The table's data source for has not been defined in statement [INSERT INTO PERSON (pid, name, age) VALUES (?, ?, ?)]

      I have examined the table schema created by the sql file compared to that generated by jboss and they seem identical.

      Am I missing something here or do I need to configure something else ?

      Any help would be appreciated!

      Thanks,
      Clive

        • 1. Re: Hypersonic:Manual Database Table Creation:CreateExceptio
          darranl


          Have you double checked if the case of the table name is having any affect on this? In the descriptor you have the table name as 'PERSON' but in your create statement it is 'person'.

          It is a while since I have used Hypersonic but this is the first thing that jumps out at me from your post.

          • 2. Re: Hypersonic:Manual Database Table Creation:CreateExceptio

            Hi darranl

            Thank you for your suggestion. I tried making everything the same case unfortunately it made no difference. :-((

            Clive

            • 3. Re: Hypersonic:Manual Database Table Creation:CreateExceptio

              Hi Guys,

              I solved this problem so thought I'd round off in case anyone ever has the same issue.

              In the hypersonic documentation, it states that you need to create a table with the text attribute in order to make it persistant and not a memory-only table:

              [CODE]
              create [B]text[/B] table person
              (
              pid varchar not null primary key,
              name varchar,
              age integer
              );
              [/CODE]

              However, this seems to cause Jboss to not recognize the table. Removing the 'text' solved the problem. So either the documentation is incorrect (or I dont understand it) or Jboss does something under the covers to make the table permanent when accessing it.

              Clive