aspose file tools*
The moose likes Object Relational Mapping and the fly likes No error/exception in log on insert yet no row inserted to db Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Reply locked New topic
Author

No error/exception in log on insert yet no row inserted to db

steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
Hibernate version:3.2
DB used:hsqldb v1.8

Hi,

I've got a problem when trying to insert a record into my database. The insert itself seems to work fine (no warnings/errors) in the console logs when I run the below code, and I can even see where hibernate has generated my new Track_ID number (for index column in db).
However when I check the actual db once the insert has allegedly been flushed and committed the new row does not appear there???

If I manually insert a row to the db and then use hibernate to select it out of db, it all works fine and i get the object returned.

Below is initial stuff that I hope will let someone solve my problem, if there 's something else somebody wants to see, let me know and I'll add to the post.

Any help on this one greatly appreciated as it's driving me up the wall!!!

Java code (simple main method containing the following) to do the actual insert (called from an ant task running under eclipse) :-


The log output that comes out of running above (anything with "*****" are my system.out debug statements, see code above. the reason it generates track id 101 is because I manually inserted a record id of 100 to make sure that code was generating correct id's) :-

My hibernate.properties file (located at root of src directory and copied over to output src dir when ant does the prepare task for the project) :-


[ March 17, 2008: Message edited by: steve jones ]

[ March 17, 2008: Message edited by: steve jones ]
[ March 17, 2008: Message edited by: steve jones ]
Paul Sturrock
Bartender

Joined: Apr 14, 2004
Posts: 10336

"sleep er"

Please check your private messages for a message from me.


JavaRanch FAQ HowToAskQuestionsOnJavaRanch
steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
Hi Paul,
Name has been changed in line with naming policy.

Any chance you could take a stab at the problem I'm posting about?
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17256
    
    6

"Steve"

Can you edit your post and add code tags to your code, and put some carriage returns in the log stuff, it is impossible to read it.

Also can you post your mapping and config file.

Thanks

Mark


Perfect World Programming, LLC - Two Laptop Bag - Tube Organizer
How to Ask Questions the Smart Way FAQ
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17256
    
    6

Um, where is your Connection Pool? Hibernate requires a Connection Pool, either using a third party Connection Pool like C3PO, which comes with Hibenate, or a Datasource through a container like an App Server.

Mark
steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
Hi Mark,
Thanks for replying. I've added the code tags and a bit of indenting to the code itself, hope it's readable now.

Mapping, java object and config files given below. I don't think it's anything to do with connection pooling as the other tests which pull data out of the database seem to work fine (see below points for bit more info). I'm only using it in the simplest way ie. 1 ant target launching just one main thread which is exactly as you see in the code above.

I've also looked at a number of websites/books and they all seem to run a similar example in almost exactly the same kind of configuration with no mention of specifying connection pools anywhere (but I did notice they tended to use an xml config file whereas I'm using the hibernate.properties file (shown at bottom of original post), but it should do same thing as far as I'm aware?).

Here's a couple more things I've tried since posting :-

* used the wasCommitted() method of the session to check what it reports and getting 'true' value back which would indicate the inserts have been committed but again checking the db later shows no row inserted.

* Manually added a row to db for testing. If i use hibernate to load the manually inputted row it successfully pulls it back and I get the expected Track object

* Tried changing the flush method on the session to ALWAYS via calling
but as with everything else it makes no difference.

Could it be something to do with some setting for HSQL that I haven't setup correctly?

Here's my Track.hbm.xml file :-


Here's my Track.java class :-


Here's the ddl that's in the music.script file of the HSQL data directory :-

where the 'STODGE' track above is the one I manually added to the db.

Much appreciation for peoples help.
Jaikiran Pai
Marshal

Joined: Jul 20, 2005
Posts: 10201
    
166

I have no experience with HSQLDB but could you try adding this following qualifier(ON COMMIT PRESERVE ROWS) while creating the table:



[My Blog] [JavaRanch Journal]
steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
Hi Jaikiran,
Thanks for the suggestion, I dropped the table and recreated it with the ddl you gave. Again the logs were almost identical to the one I've posted (ie. it told me it had committed the stuff successfully) but again checking after the process had ran I have an empty table!!!

Anything else you/someone might suggest? For a bit more info. on what I'm trying to do, this is basically the first part of chapter 3 of the book "Hibernate , A developers notebook" by James Elliott, but updated code/config bits for hibernate 3 (Note I've followed most of the details of updating as given by the following site : http://www.epischel.de/wordpress/?p=24 )

Maybe I should just give up with HSQL and write it off as not very good (blatant flame to hsql devotees so they maybe inspired to help me out and point out where it's me and not hsql that's a write off ). Can anyone recommend a good free rdbms that's simple to install and use? I tried setting up postgresql earlier but eventually gave up as stuffing around with all the configuration was proving just as much of a headache as this problem.
Jaikiran Pai
Marshal

Joined: Jul 20, 2005
Posts: 10201
    
166

Originally posted by steve jones:
Can anyone recommend a good free rdbms that's simple to install and use? I tried setting up postgresql earlier but eventually gave up as stuffing around with all the configuration was proving just as much of a headache as this problem.


For simple application like this, i personally use MySQL which is simple to install and use.
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17256
    
    6

When posting any logs or console displays, please please add carriage returns, so that we can read the thread. You can always go back and edit your posts to add them.

Mark
steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
Hi guys,
Mark : Not sure what browser you're viewing this thread with but I've viewed it with both firefox and internet explorer and the log entry has carriage returns and appears totally readable when I look at it in either (but just to help I'll re-post the bits that I think matter below).

Jaikiran : Good idea but as far as I know mysql isn't free so unfortunately doesn't solve my problem.

Log highlights, this is taken from the part following it successfully setting up a connection to the db and now its trying to create the session factory :-
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17256
    
    6

I am using FF 2.0.0.12 and I have to scroll quite a bit to the right to get to any text in the posts.

Sorry, I am not being much help, but I just can't read the posts.

Mark
steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
hmmmmmmmmmmmmmmmmm............. I appear to have solved the problem, but how I solved it doesn't make much sense!!

While trying to view the logs from the database while the transaction was in progress I threw in a Thread.sleep(20*1000) just after the tx.commit() statement and for some reason this caused the transaction to be permanently committed to the db!

I've played around with the delay I need to use and for some reason it has to be no less than 19 seconds or the transaction doesn't seem to get committed.

So now my question has changed to :-
Anybody have any idea why this delay seems to work???

Thanks again for any replies
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Posts: 17256
    
    6

Steve, that is odd, but now that you have that temp solution, can you post it in a new thread so that this whole no carriage return can't read the thread thing isn't an issue.

Thanks

Mark
Jaikiran Pai
Marshal

Joined: Jul 20, 2005
Posts: 10201
    
166

Steve,

Mark is right. Even i am having problem reading this thread (i'm using Firefox 2.0.0). If you could edit your post to delete a couple of lines before and after (including) the following statement in the log

01:28:41,560 DEBUG SessionFactoryImpl:177......


that would be great.

Coming back to what you mention about HSQLDB behaviour, i hadn't heard about such a thing before. But after you mentioned the 20 second delay, i read the HSQLDB docs and found the WRITE_DELAY property of the server (which i think in your case is set to true). Try setting it to FALSE and see if it helps. Read through that doc to understand what that property is meant for.
steve jones
Greenhorn

Joined: Mar 16, 2008
Posts: 7
Hi Jakiran/Mark,
Looks like Jakiran found the solution! It was indeed the default setting of the WRITE_DELAY setting of HSQL db that was causing the problem, it's set at 20 seconds. Turning the WRITE_DELAY function off in the db sorted the problem.

Because I'm running the db in a mode which means its only ever up when I run my application code, the db was never alive for more than 20 seconds thus the committed additions were never committed to file.

Thanks for all your help and apologies for the awkward formatting of the thread.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: No error/exception in log on insert yet no row inserted to db