isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dan Haywood <...@haywood-associates.co.uk>
Subject Re: Not able to add 1:m bidirectional relationship
Date Fri, 06 Mar 2015 14:31:54 GMT
OK; if you want to use lists, the starting article to read is:
http://www.datanucleus.org/products/datanucleus/jdo/orm/embedded.html#Collection

On 6 March 2015 at 14:29, Dan Haywood <dan@haywood-associates.co.uk> wrote:

> I just posted that last mail, and then I figured out what the problem
> probably is.
>
> I bet you have an entity that has a collection of clauses, and that the
> collection is a List<...>.
>
> In which case the "idx" is added by DN in order that the sequence of those
> clause objects can be preserved.
>
> One easy fix (which we do) is to convert to a SortedSet, and have your
> RegulationClause implement Comparable.
>
> But let me go check up on the "correct" way to do lists in DN.
>
> HTH
> Dan
>
>
>
>
>
>
> On 6 March 2015 at 14:27, Dan Haywood <dan@haywood-associates.co.uk>
> wrote:
>
>> Hi Marianne,
>>
>> If "Idx" isn't a property that you've explicitly added, then it's
>> probably been added through some DN annotation that you have (is my guess).
>>
>> So, could you show us the DN annotations for the entity that's mapped to
>> the failing table ("regulation_clauses").  (Or, the annotations for the
>> collection if that's what it actually is).
>>
>> ~~~
>> Also, let's enable some extra logging.
>>
>> In WEB-INF/logging.properties, switch these two properties to DEBUG:
>>
>> # DataNucleus
>> # the first two log the DML and DDL (if set to DEBUG)
>> log4j.logger.DataNucleus.Datastore.Native=DEBUG, Console
>> log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console
>>
>>
>> Also, in persistor.properties, you could enable the log4jdbc-remix
>> driver, eg, if using hsqldb then comment out:
>>
>>
>> #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
>>
>> #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
>> #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
>> #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
>>
>> and replace with (below):
>>
>>
>> isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
>>
>> isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:hsqldb:mem:test
>> isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
>> isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
>>
>>
>> Hopefully in your console you'll be able to search for 'idx' and we'll
>> get a clue what it relates to.
>>
>>
>>
>> Thx
>> Dan
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On 6 March 2015 at 14:19, Marianne Hagaseth <
>> Marianne.Hagaseth@marintek.sintef.no> wrote:
>>
>>> Thanks for replying so quickly!
>>>
>>> 'Idx' is not a field added by me, thus, it is created by Isis/DN, I
>>> think?
>>> Some index-stuff for the database table?
>>>
>>> Best,
>>> Marianne.
>>>
>>> -----Original Message-----
>>> From: Martin Grigorov [mailto:mgrigorov@apache.org]
>>> Sent: 6. mars 2015 15:10
>>> To: users
>>> Subject: Re: Not able to add 1:m bidirectional relationship
>>>
>>>  java.sql.SQLException: Field 'idx' doesn't have a default value
>>>
>>> Do you have an entity with field 'idx' in your model ?
>>> Or it could be something created by Isis/DN, I don't know.
>>>
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> https://twitter.com/mtgrigorov
>>>
>>> On Fri, Mar 6, 2015 at 4:06 PM, Marianne Hagaseth <
>>> Marianne.Hagaseth@marintek.sintef.no> wrote:
>>>
>>> > Yes, a lot. See below.
>>> > It seems like the values are not picked up, and then the insert into
>>> > the database tables fails because the columns are NOT NULL and no
>>> > default values exists.
>>> >
>>> > Some more from the STACK:
>>> >
>>> > Caused by:
>>> > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
>>> > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:754)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.internalAdd(JoinSetStore.java:502)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.add(JoinSetStore.java:333)
>>> >         ... 71 more
>>> > Caused by: java.sql.SQLException: Field 'idx' doesn't have a default
>>> > value
>>> >
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> > And more:
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> >
>>> >         ... 73 more
>>> > Nested Throwables StackTrace:
>>> > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
>>> > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> >         at
>>> > org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSe
>>> > tStore.java:754)
>>> >
>>> >         at
>>> >
>>> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>>> >         at
>>> > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.ja
>>> > va:582) Caused by: java.sql.SQLException: Field 'idx' doesn't have a
>>> > default value
>>> >         at
>>> > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
>>> >
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:733)
>>> >         ... 73 more
>>> >
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> > And more:
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> >
>>> > 14:45:38,105  [Persistence          1661257338@qtp-721005297-3 WARN ]
>>> > Execution of method "add" on field "clauses" caused an error : Add
>>> > request failed : INSERT INTO regulation_clauses (id_oid,id_eid) VALUES
>>> > (?,?) Add request failed : INSERT INTO regulation_clauses
>>> > (id_oid,id_eid) VALUES
>>> > (?,?)
>>> > org.datanucleus.exceptions.NucleusDataStoreException: Add request
>>> failed :
>>> > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.add(JoinSetStore.java:349)
>>> >         at
>>> > org.datanucleus.store.types.backed.SortedSet.add(SortedSet.java:716)
>>> >
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> > And more:
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> >
>>> >         at
>>> >
>>> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>>> >         at
>>> > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.ja
>>> > va:582)
>>> > Caused by:
>>> > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
>>> > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:754)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.internalAdd(JoinSetStore.java:502)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.add(JoinSetStore.java:333)
>>> >         ... 71 more
>>> > Caused by: java.sql.SQLException: Field 'idx' doesn't have a default
>>> value
>>> >         at
>>> com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
>>> >         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
>>> >
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> > And more:
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> >
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:733)
>>> >         ... 73 more
>>> > Nested Throwables StackTrace:
>>> > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
>>> > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> >         at
>>> >
>>> org.datanucleus.store.rdbms.scostore.JoinSetStore.doInternalAdd(JoinSetStore.java:754)
>>> >         at
>>> > org.datanucleus.store.rdbms.scostore.JoinSetStore.internalAdd(JoinSetS
>>> > tore.java:502)
>>> >
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> > And more:
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> >
>>> >         at
>>> >
>>> org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
>>> >         at
>>> > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.ja
>>> > va:582) Caused by: java.sql.SQLException: Field 'idx' doesn't have a
>>> > default value
>>> >         at
>>> > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
>>> >
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> > And more:
>>> > <<<<<<<<<<<<<<<<<<<<<<<<<<<
>>> >
>>> > Best
>>> > -Marianne.
>>> >
>>> > -----Original Message-----
>>> > From: Martin Grigorov [mailto:mgrigorov@apache.org]
>>> > Sent: 6. mars 2015 14:53
>>> > To: users
>>> > Subject: Re: Not able to add 1:m bidirectional relationship
>>> >
>>> > Hi,
>>> >
>>> >
>>> > On Fri, Mar 6, 2015 at 3:51 PM, Marianne Hagaseth <
>>> > Marianne.Hagaseth@marintek.sintef.no> wrote:
>>> >
>>> > > Hi,
>>> > > I am trying to add a 1:m bidirectional relationship, but it fails.
>>> > > I wonder if  could be a mismatch between the versions used for some
>>> > > of the stuff needed.
>>> > > My set up looks like:
>>> > >
>>> > >
>>> > > *        isis-core-webserver 1.7.0
>>> > >
>>> > > *        datanucleus-api-jdo-3.2.7
>>> > >
>>> > > *        Eclipse Java EE IDE 4.4.2
>>> > >
>>> > > *        mysql-connector-java-5.1.34
>>> > >
>>> > > *        mysql server 5.6.23
>>> > >
>>> > > *        Jdk 1.7.0_75
>>> > >
>>> > >
>>> > > It fails here at backingStore.add(...):
>>> > >
>>> > >                 try
>>> > >
>>> > >                 {
>>> > >
>>> > >                     backingStore.add(ownerOP,element, (useCache ?
>>> > > delegate.size() : -1));
>>> > >
>>> > >                 }
>>> > >
>>> > >                 catch (NucleusDataStoreException dse)
>>> > >
>>> > >                 {
>>> > >
>>> > >
>>> > > NucleusLogger.PERSISTENCE.warn(LOCALISER.msg("023013",
>>> > > "add", ownerMmd.getName(), dse));
>>> > >
>>> > >                     backingSuccess = false;
>>> > >
>>> > >                 }
>>> > > With Error message:
>>> > >
>>> > > 12:20:54,055  [Datastore            1844639495@qtp-721005297-3
>>> ERROR]
>>> > > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
>>> > > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> > >
>>> > > 12:20:54,055  [Datastore            1844639495@qtp-721005297-3
>>> ERROR]
>>> > > org.datanucleus.store.rdbms.exceptions.MappedDatastoreException:
>>> > > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> > >
>>> > > 12:20:54,055  [Datastore            1844639495@qtp-721005297-3
>>> ERROR]
>>> > > Add request failed : INSERT INTO regulation_clauses (id_oid,id_eid)
>>> > > VALUES
>>> > > (?,?)
>>> > >
>>> > > 12:20:54,055  [Datastore            1844639495@qtp-721005297-3
>>> ERROR]
>>> > > Add request failed : INSERT INTO regulation_clauses (id_oid,id_eid)
>>> > > VALUES
>>> > > (?,?)
>>> > >
>>> > > 12:20:54,056  [Persistence          1844639495@qtp-721005297-3 WARN
>>> ]
>>> > > Execution of method "add" on field "clauses" caused an error : Add
>>> > > request failed : INSERT INTO regulation_clauses (id_oid,id_eid)
>>> > > VALUES
>>> > > (?,?)
>>> > >
>>> > > Add request failed : INSERT INTO regulation_clauses (id_oid,id_eid)
>>> > > VALUES
>>> > > (?,?)
>>> > >
>>> > > org.datanucleus.exceptions.NucleusDataStoreException: Add request
>>> > > failed
>>> > :
>>> > > INSERT INTO regulation_clauses (id_oid,id_eid) VALUES (?,?)
>>> > >
>>> > >         at
>>> > > org.datanucleus.store.rdbms.scostore.JoinSetStore.add(JoinSetStore.j
>>> > > av
>>> > > a:349)
>>> > >
>>> > >         at
>>> > > org.datanucleus.store.types.backed.SortedSet.add(SortedSet.java:716)
>>> > >
>>> > >         at dom.regulation.Regulation.addClause(Regulation.java:795)
>>> > >
>>> > >         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> > > Method)
>>> > >
>>> > >         at
>>> > > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl
>>> > > .j
>>> > > ava:57)
>>> > >
>>> > >         at
>>> > > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcce
>>> > > ss
>>> > > orImpl.java:43)
>>> > >
>>> > >
>>> > > etc.etc...
>>> > >
>>> >
>>> > Is there "Caused by: ..." down in the stack ?
>>> >
>>> >
>>> > >
>>> > > Best regards,
>>> > > Marianne Hagaseth
>>> > >
>>> > >
>>> >
>>>
>>
>>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message