[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Exception during persisting entities
hoeft
do-not-reply at jboss.com
Thu Nov 16 05:43:59 EST 2006
Hi!
I use JBOSS 4.0.5GA and get always following exception:
| 11:06:47,445 WARN [JDBCExceptionReporter] SQL Error: 0, SQLState: null
| 11:06:47,445 ERROR [JDBCExceptionReporter] failed batch
| 11:06:47,445 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session
| org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
| at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
| at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
| at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
| at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249)
|
... and I don't know why :-(.
My local client Code:
| public void testMessage() throws Throwable {
| TestStarterRemote testStarter = getTestObject();
|
| // build messages
| for (int i = 0; i < 10; i++) {
|
| Message msg = new Message();
|
| // add properties to each message
| Set<Propertie> properties = new HashSet<Propertie>();
| for (int n = 0; n < 2; n++) {
| //i must set the id here, because I want to insert the property
| //into a hashset
| properties.add(new Propertie(n, "key" + n, "value" + n));
| }
|
| msg.setHeaderProperties(properties);
|
| // if i==1: an error is being thrown here
| msg = testStarter.merge(msg);
| }
| }
|
The message class:
| @Entity
| @Inheritance(strategy = InheritanceType.JOINED)
| public class Message extends EntityWithIntId implements Serializable {
|
| private static final long serialVersionUID = 1L;
|
| private Set<Propertie> headerProperties = new HashSet<Propertie>();
|
| private long id;
|
| @Id
| @GeneratedValue(strategy = GenerationType.AUTO)
| public long getId() {
| return id;
| }
|
| public void setId(long id) {
| this.id = id;
| }
|
|
| public Message() {
| }
|
| @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
| public Set<Propertie> getHeaderProperties() {
| return headerProperties;
| }
|
|
| public void setHeaderProperties(Set<Propertie> properties) {
| this.headerProperties = properties;
| }}
|
My property class:
| @Entity
| public class Propertie extends EntityWithIntId implements Serializable {
|
| private static final long serialVersionUID = 1L;
|
| private String key;
|
| private Serializable value;
|
| private long id;
|
| public Propertie() {
| }
|
| public Propertie(long id, String key, Serializable value) {
| super();
| this.setKey(key);
| this.setValue(value);
| this.setId(id);
| }
|
| @Id
| @GeneratedValue(strategy = GenerationType.AUTO)
| public long getId() {
| return id;
| }
|
| public void setId(long id) {
| this.id = id;
| }
|
| (...)
| }
|
|
And now, maybe the root of all my problems, the base class:
| public abstract class EntityWithIntId {
|
| public abstract long getId();
|
| /**
| * two entities are equal if they have the same class and the same id
| *
| * @see java.lang.Object#equals(java.lang.Object)
| */
| @Override
| public boolean equals(Object obj) {
| if (obj == null || !obj.getClass().equals(this.getClass())) {
| return false;
| }
| EntityWithIntId tmp = (EntityWithIntId) obj;
|
| return tmp.getId() == this.getId();
| }
|
| @Override
| public int hashCode() {
| return new Long(this.getId()).hashCode();
| }
|
I set the id of the each properties object in my client. The id is autmatically generated if the propertie is persisted. Is that the root of my problem. Has hibernate a problem with that?
Thanks for your help
Meinert
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3986462#3986462
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3986462
More information about the jboss-user
mailing list