Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] New QueryException in version 1.1

I have not customized the delete query sql. 
for CpTransaction looks like this --
    entity = getEntityManager().getReference(CpTransaction.class,
entity.getTransactionId());
    getEntityManager().remove(entity);

for CpMsg it looks like -
            entity = getEntityManager().getReference(CpMsg.class,
entity.getMsgId());
            getEntityManager().remove(entity);

Something I just noticed -- When it calls
entityManager.delete(cpTransaction)  this seems to work
as I get a delete successful message.   But the next statement calls
entityManager.commit() which is when it fails with these log messages -
[4/2/09 9:39:38:015 CDT] 00000036 SystemOut     O [EL Finer]: 2009-04-02
09:39:38.015--UnitOfWork(2091023522)--Thread(Thread[WebContainer :
3,5,main])--begin unit of work commit
[4/2/09 9:39:38:015 CDT] 00000036 SystemOut     O [EL Finer]: 2009-04-02
09:39:38.015--ClientSession(246550194)--Connection(1484150902)--Thread(Thread[WebContainer
: 3,5,main])--begin transaction
[4/2/09 9:39:38:015 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.015--ClientSession(246550194)--Thread(Thread[WebContainer :
3,5,main])--reconnecting to external connection pool
[4/2/09 9:39:38:031 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.031--UnitOfWork(2091023522)--Thread(Thread[WebContainer :
3,5,main])--Execute query
DeleteObjectQuery(com.gmrc.jpa.domain.CpTransCoverage@13e013e0)
[4/2/09 9:39:38:031 CDT] 00000036 SystemOut     O [EL Fine]: 2009-04-02
09:39:38.031--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--DELETE FROM CP_SCHEDULED_ITEM WHERE (COVERAGE_ID = ?)
	bind => [1109268]
[4/2/09 9:39:38:031 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.031--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--[SQL0100] Row not found for DELETE.:02000 - null
[4/2/09 9:39:38:046 CDT] 00000036 SystemOut     O [EL Fine]: 2009-04-02
09:39:38.046--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--DELETE FROM CP_COVERAGE_DETAIL WHERE (COVERAGE_ID = ?)
	bind => [1109268]
[4/2/09 9:39:38:062 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.062--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--[SQL0100] Row not found for DELETE.:02000 - null
[4/2/09 9:39:38:062 CDT] 00000036 SystemOut     O [EL Fine]: 2009-04-02
09:39:38.062--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--DELETE FROM CP_COVERAGE WHERE (COVERAGE_ID = ?)
	bind => [1109268]
[4/2/09 9:39:38:078 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.078--UnitOfWork(2091023522)--Thread(Thread[WebContainer :
3,5,main])--Execute query
DeleteObjectQuery(com.gmrc.jpa.domain.CpTransaction@e86eb5eb)
[4/2/09 9:39:38:078 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.078--UnitOfWork(2091023522)--Thread(Thread[WebContainer :
3,5,main])--Execute query
DeleteObjectQuery(com.gmrc.jpa.domain.CpLob@4b764b76)
[4/2/09 9:39:38:078 CDT] 00000036 SystemOut     O [EL Fine]: 2009-04-02
09:39:38.078--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--DELETE FROM CP_INTEREST_LINK WHERE ((PARENT_ID = ?) AND
(LINK_TYPE = P))
	bind => [26677]
[4/2/09 9:39:38:093 CDT] 00000036 SystemOut     O [EL Finest]: 2009-04-02
09:39:38.093--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--[SQL0100] Row not found for DELETE.:02000 - null
[4/2/09 9:39:38:093 CDT] 00000036 SystemOut     O [EL Fine]: 2009-04-02
09:39:38.093--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--DELETE FROM CP_LOB WHERE (LOB_ID = ?)
	bind => [26677]
[4/2/09 9:39:38:109 CDT] 00000036 SystemOut     O [EL Warning]: 2009-04-02
09:39:38.109--UnitOfWork(2091023522)--Thread(Thread[WebContainer :
3,5,main])--Exception [EclipseLink-6094] (Eclipse Persistence Services -
1.1.0.r3634): org.eclipse.persistence.exceptions.QueryException
Exception Description: The parameter name [POLICY_NUMBER] in the query's
selection criteria does not match any parameter name defined in the query.
Query: DeleteObjectQuery(com.gmrc.jpa.domain.CpTransaction@e86eb5eb)
[4/2/09 9:39:38:109 CDT] 00000036 SystemOut     O [EL Finer]: 2009-04-02
09:39:38.109--ClientSession(246550194)--Connection(1891922116)--Thread(Thread[WebContainer
: 3,5,main])--rollback transaction
[4/2/09 9:39:38:125 CDT] 00000036 SystemOut     O [EL Finer]: 2009-04-02
09:39:38.125--UnitOfWork(2091023522)--Thread(Thread[WebContainer :
3,5,main])--release unit of work
[4/2/09 9:39:38:125 CDT] 00000036 SystemOut     O [EL Finer]: 2009-04-02
09:39:38.125--ClientSession(246550194)--Thread(Thread[WebContainer :
3,5,main])--client released



Here is the stack on delete-

James Sutherland wrote:
> 
> The error does not make any sense, as TRANSACTION_ID is the id of the
> CpTransaction, not POLICY_NUMBER, the delete should only be using the
> TRANSACTION_ID field.  Have you customized you delete query sql?
> 
> Please include the full exception stack trace.  Also include the finest
> log for the entire transaction commit.  If it is too large, then isolate
> the transaction to just deleting the one object.
> 
> 
> 
> khaskett wrote:
>> 
>> I will try to limit the parent entity to just relevant fields, as it is
>> quite large -
>> @Entity
>> @Table(name = "CP_TRANSACTION")
>> @Converter(name = "boolean", converterClass =
>> com.gmrc.jpa.domain.mappings.converters.BooleanYNConverter.class)
>> public class CpTransaction extends BaseDomain implements
>> java.io.Serializable {
>> 
>>     private Set<CpMsg> cpMsgs = new HashSet<CpMsg>(0);
>> ....
>>     private String policyNumber;
>> ....
>>     private Long transactionId;
>> ...
>> 
>> 
>>     public boolean addCpMsg(final CpMsg cpMsg) {
>>     	boolean retVal = false;
>>         if (cpMsg != null) {
>>         	if (this.cpMsgs == null) {
>>                 this.cpMsgs = new HashSet<CpMsg>();
>>             }
>>             retVal = this.cpMsgs.add(cpMsg);
>>             cpMsg.setCpTransaction(this);
>>         }
>>         return retVal;
>>     }
>> 
>>     @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
>> mappedBy = "cpTransaction")
>>     @PrivateOwned
>>     public Set<CpMsg> getCpMsgs() {
>>         return this.cpMsgs;
>>     }
>> 
>>     public void setCpMsgs(final Set<CpMsg> cpMsgs) {
>>         this.cpMsgs = cpMsgs;
>>     }
>> 
>>     @Column(name = "POLICY_NUMBER", length = 20)
>>     public String getPolicyNumber() {
>>         return this.policyNumber;
>>     }
>> 
>>     public void setPolicyNumber(final String policyNumber) {
>>         this.policyNumber = policyNumber;
>>     }
>> 
>>     @Id
>>     @GeneratedValue(strategy = GenerationType.IDENTITY)
>>     @Column(name = "TRANSACTION_ID", unique = true, nullable = false,
>> precision = 11, scale = 0)
>>     public Long getTransactionId() {
>>         return this.transactionId;
>>     }
>> 
>>     public void setTransactionId(final Long transactionId) {
>>         this.transactionId = transactionId;
>>     }
>> }
>> 
>> // This is the Child table
>> @Entity
>> @Table(name = "CP_MSG")
>> public class CpMsg extends BaseDomain {
>> 
>>     private Long msgId;
>>     private String policyNbr;
>>     private Date msgTime;
>>     private String msgType;
>>     private String msgText;
>>     private String userId;
>>     private CpTransaction cpTransaction;
>> 
>>     @ManyToOne(fetch = FetchType.LAZY)
>>     @JoinColumn(name = "POLICY_NBR", referencedColumnName =
>> "POLICY_NUMBER", updatable = false, insertable = false)
>>     public CpTransaction getCpTransaction() {
>>         return this.cpTransaction;
>>     }
>> 
>>     public void setCpTransaction(final CpTransaction cpTransaction) {
>>         this.cpTransaction = cpTransaction;
>>         
>>         if (this.cpTransaction != null &&
>> !this.cpTransaction.getCpMsgs().contains(this)) {
>>         	this.cpTransaction.getCpMsgs().add(this);
>>         	this.policyNbr = this.cpTransaction.getPolicyNumber();
>>         }
>>     }
>> 
>>     public CpMsg() {
>>     }
>> 
>>     public CpMsg(final Long msgId, final Date msgTime, final String
>> msgText) {
>>         this.msgId = msgId;
>>         this.msgTime = msgTime;
>>         this.msgText = msgText;
>>     }
>> 
>>     public CpMsg(final Long msgId, final String policyNbr, final String
>> userId, final Date msgTime,
>>             final String msgType, final String msgText) {
>>         this.msgId = msgId;
>>         this.policyNbr = policyNbr;
>>         this.msgTime = msgTime;
>>         this.msgType = msgType;
>>         this.msgText = msgText;
>>         this.userId = userId;
>>     }
>> 
>>     @Id
>>     @GeneratedValue(strategy = GenerationType.IDENTITY)
>>     @Column(name = "MSG_ID", unique = true, nullable = false, precision =
>> 11, scale = 0)
>>     public Long getMsgId() {
>>         return this.msgId;
>>     }
>> 
>>     public void setMsgId(final Long msgId) {
>>         this.msgId = msgId;
>>     }
>> 
>>     @Column(name = "POLICY_NBR", length = 20)
>>     public String getPolicyNbr() {
>>         return this.policyNbr;
>>     }
>> 
>>     public void setPolicyNbr(final String policyNbr) {
>>         this.policyNbr = policyNbr;
>>     }
>> 
>>     @Temporal(TemporalType.DATE)
>>     @Column(name = "MSG_TIME", nullable = false, length = 26)
>>     public Date getMsgTime() {
>>         return this.msgTime;
>>     }
>> 
>>     public void setMsgTime(final Date msgTime) {
>>         this.msgTime = msgTime;
>>     }
>> 
>>     @Column(name = "MSG_TYPE", length = 5)
>>     public String getMsgType() {
>>         return this.msgType;
>>     }
>> 
>>     public void setMsgType(final String msgType) {
>>         this.msgType = msgType;
>>     }
>> 
>>     @Column(name = "MSG_TEXT", nullable = false)
>>     public String getMsgText() {
>>         return this.msgText;
>>     }
>> 
>>     public void setMsgText(final String msgText) {
>>         this.msgText = msgText;
>>     }
>> 
>>     public void setUserId(final String userId) {
>>         this.userId = userId;
>>     }
>> 
>>     @Column(name = "USER_ID", nullable = false)
>>     public String getUserId() {
>>         return this.userId;
>>     }
>> 
>>     @Override
>>     public BaseDomain getParentDomain() {
>>         // ParentDomain context not supported
>>         return null;
>>     }
>> 
>>     @Override
>>     public CpActionCode getCpActionCode() {
>>         // there is not associated action code
>>         return null;
>>     }
>> 
>>     @Override
>>     @Transient
>>     public long getId() {
>>         return this.getMsgId();
>>     }
>> 
>>     @Override
>>     public void setId(long id) {
>>         this.setMsgId(id);
>>     }
>> }
>> 
>> The full stack trace is pretty much as listed earlier. I will add the
>> couple of statements before and after this error. I have logging set to
>> FINEST right now.
>> 
>> [3/31/09 21:04:41:609 CDT] 0000003c SystemOut     O [EL Finest]:
>> 2009-03-31
>> 21:04:41.609--ClientSession(1163543898)--Connection(409213028)--Thread(Thread[WebContainer
>> : 0,5,main])--[SQL0100] Row not found for DELETE.:02000 - null
>> [3/31/09 21:04:41:640 CDT] 0000003c SystemOut     O [EL Fine]: 2009-03-31
>> 21:04:41.64--ClientSession(1163543898)--Connection(409213028)--Thread(Thread[WebContainer
>> : 0,5,main])--DELETE FROM CP_LOB WHERE (LOB_ID = ?)
>> 	bind => [26589]
>> [3/31/09 21:04:41:796 CDT] 0000003c SystemOut     O [EL Warning]:
>> 2009-03-31
>> 21:04:41.781--UnitOfWork(494673276)--Thread(Thread[WebContainer :
>> 0,5,main])--Exception [EclipseLink-6094] (Eclipse Persistence Services -
>> 1.1.0.r3634): org.eclipse.persistence.exceptions.QueryException
>> Exception Description: The parameter name [POLICY_NUMBER] in the query's
>> selection criteria does not match any parameter name defined in the
>> query.
>> Query: DeleteObjectQuery(com.gmrc.jpa.domain.CpTransaction@de21fdeb)
>> [3/31/09 21:04:41:796 CDT] 0000003c SystemOut     O [EL Finer]:
>> 2009-03-31
>> 21:04:41.796--ClientSession(1163543898)--Connection(409213028)--Thread(Thread[WebContainer
>> : 0,5,main])--rollback transaction
>> [3/31/09 21:04:41:859 CDT] 0000003c SystemOut     O [EL Finer]:
>> 2009-03-31
>> 21:04:41.859--UnitOfWork(494673276)--Thread(Thread[WebContainer :
>> 0,5,main])--release unit of work
>> [3/31/09 21:04:41:859 CDT] 0000003c SystemOut     O [EL Finer]:
>> 2009-03-31
>> 21:04:41.859--ClientSession(1163543898)--Thread(Thread[WebContainer :
>> 0,5,main])--client released
>> 
>> The id of the CpTransaction object is not null, it is 31840.
>> As there are multiple child tables to CpTransaction the full stack is
>> quite large also.. but here is a snippet where it first does a read on
>> CpMsg
>> [3/31/09 21:04:40:250 CDT] 0000003c SystemOut     O [EL Finest]:
>> 2009-03-31
>> 21:04:40.25--ServerSession(1388466882)--Thread(Thread[WebContainer :
>> 0,5,main])--Execute query ReadAllQuery(name="cpMsgs" referenceClass=CpMsg
>> sql="SELECT MSG_ID, MSG_TEXT, MSG_TYPE, MSG_TIME, USER_ID, POLICY_NBR
>> FROM CP_MSG WHERE (POLICY_NBR = ?)")
>> [3/31/09 21:04:40:250 CDT] 0000003c SystemOut     O [EL Finest]:
>> 2009-03-31
>> 21:04:40.25--ServerSession(1388466882)--Thread(Thread[WebContainer :
>> 0,5,main])--reconnecting to external connection pool
>> [3/31/09 21:04:40:250 CDT] 0000003c SystemOut     O [EL Fine]: 2009-03-31
>> 21:04:40.25--ServerSession(1388466882)--Connection(307630678)--Thread(Thread[WebContainer
>> : 0,5,main])--SELECT MSG_ID, MSG_TEXT, MSG_TYPE, MSG_TIME, USER_ID,
>> POLICY_NBR FROM CP_MSG WHERE (POLICY_NBR = ?)
>> 	bind => [0000431908]
>> 
>> And the POLICY_NBR is correct.
>> 
>> Let me know if there is anything else 
>> 
>> 
>> James Sutherland wrote:
>>> 
>>> That is odd, in the CpTransaction object that you are deleting, what is
>>> the value of its id, is it null?  What is its Id, policyNumber is not
>>> marked as the id?  Please include the  complete mappings for this class
>>> and the full exception stack trace.
>>> 
>>> 
>>> 
>>> khaskett wrote:
>>>> 
>>>> I removed the @JoinColumn as suggested but I still get the same error -
>>>> [3/31/09 20:28:00:437 CDT] 00000035 SystemOut     O [EL Warning]:
>>>> 2009-03-31
>>>> 20:28:00.421--UnitOfWork(2109111734)--Thread(Thread[WebContainer :
>>>> 0,5,main])--Exception [EclipseLink-6094] (Eclipse Persistence Services
>>>> - 1.1.0.r3634): org.eclipse.persistence.exceptions.QueryException
>>>> Exception Description: The parameter name [POLICY_NUMBER] in the
>>>> query's selection criteria does not match any parameter name defined in
>>>> the query.
>>>> Query: DeleteObjectQuery(com.gmrc.jpa.domain.CpTransaction@de21fdeb)
>>>> 
>>>> Anything else I might try?
>>>> Thanks
>>>> 
>>>> 
>>>> James Sutherland wrote:
>>>>> 
>>>>> I'm not exactly sure, but my guess is it has something to do with the,
>>>>> 
>>>>> @JoinColumn(name = "POLICY_NUMBER", referencedColumnName =
>>>>> "POLICY_NBR") 
>>>>> 
>>>>> Annotation in your @OneToMany mapping.  In JPA 1.0 using a @JoinColumn
>>>>> in a @OneToMany was not supported.  However in JPA 2.0 it will be, and
>>>>> is in EclipseLink 1.1.  Because you are using a mappedBy in your
>>>>> mapping though, you should not have the @JoinColumn, so you should
>>>>> remove it.
>>>>> 
>>>>> 
>>>>> khaskett wrote:
>>>>>> 
>>>>>> Is there a way to figure out why I am getting a QueryException in a
>>>>>> delete request?
>>>>>> [3/30/09 14:47:35:328 CDT] 0000003f SystemOut     O [EL Warning]:
>>>>>> 2009-03-30
>>>>>> 14:47:35.328--UnitOfWork(2104393070)--Thread(Thread[WebContainer :
>>>>>> 5,5,main])--Exception [EclipseLink-6094] (Eclipse Persistence
>>>>>> Services - 1.1.0.r3634):
>>>>>> org.eclipse.persistence.exceptions.QueryException
>>>>>> Exception Description: The parameter name [POLICY_NUMBER] in the
>>>>>> query's selection criteria does not match any parameter name defined
>>>>>> in the query.
>>>>>> Query: DeleteObjectQuery(com.gmrc.jpa.domain.CpTransaction@de21fdeb)
>>>>>> 
>>>>>> I was not seeing this in the 1.0.2 version.
>>>>>> 
>>>>>> I have narrowed it down to the relationship between these two
>>>>>> entities.
>>>>>> 
>>>>>> @Entity
>>>>>> @Table(name = "CP_TRANSACTION")
>>>>>> public class CpTransaction extends BaseDomain implements
>>>>>> java.io.Serializable {
>>>>>> ....
>>>>>>     private Set<CpMsg> cpMsgs = new HashSet<CpMsg>(0);
>>>>>> ....
>>>>>>     @OneToMany(fetch = FetchType.LAZY, mappedBy = "cpTransaction")
>>>>>>     @JoinColumn(name = "POLICY_NUMBER", referencedColumnName =
>>>>>> "POLICY_NBR")
>>>>>>     @PrivateOwned
>>>>>>     public Set<CpMsg> getCpMsgs() {
>>>>>>         return this.cpMsgs;
>>>>>>     }
>>>>>> 
>>>>>>     @Column(name = "POLICY_NUMBER", length = 20)
>>>>>>     public String getPolicyNumber() {
>>>>>>         return this.policyNumber;
>>>>>>     }
>>>>>> }
>>>>>> 
>>>>>> @Entity
>>>>>> @Table(name = "CP_MSG")
>>>>>> public class CpMsg extends BaseDomain {
>>>>>>     private Long msgId;
>>>>>> .....
>>>>>>     private String policyNbr;
>>>>>>     private CpTransaction cpTransaction;
>>>>>> 
>>>>>>     @ManyToOne(fetch = FetchType.LAZY)
>>>>>>     @JoinColumn(name = "POLICY_NBR", referencedColumnName =
>>>>>> "POLICY_NUMBER", updatable = false, insertable = false)
>>>>>>     public CpTransaction getCpTransaction() {
>>>>>>         return this.cpTransaction;
>>>>>>     }
>>>>>> 
>>>>>>     @Id
>>>>>>     @GeneratedValue(strategy = GenerationType.IDENTITY)
>>>>>>     @Column(name = "MSG_ID", unique = true, nullable = false,
>>>>>> precision = 11, scale = 0)
>>>>>>     public Long getMsgId() {
>>>>>>         return this.msgId;
>>>>>>     }
>>>>>>     
>>>>>>     @Column(name = "POLICY_NBR", length = 20)
>>>>>>     public String getPolicyNbr() {
>>>>>>         return this.policyNbr;
>>>>>>     }
>>>>>> }
>>>>>> 
>>>>>> The SQL relationship is CP_TRANSACTION.POLICY_NUMBER =
>>>>>> CP_MSG.POLICY_NBR.
>>>>>> 
>>>>>> If I do a getCpMsgs() it seems to find them correctly.
>>>>>> 
>>>>>> Thanks
>>>>>> Kevin
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/New-QueryException-in-version-1.1-tp22792539p22849532.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top