Bugs item #676533, was opened at 2003-01-28 19:15
Message generated for change (Comment added) made by nobody
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=676533&group_id=22866

Category: JBossCMP
Group: CVS HEAD
Status: Open
Resolution: None
Priority: 5
Submitted By: Jeremy Boynes (jboynes)
Assigned to: Jeremy Boynes (jboynes)
Summary: Multistep IS NULL SQL incorrect

Initial Comment:
With the commerce test schema, the EJB-QL query
SELECT OBJECT(l) 
FROM LineItem l 
WHERE l.order.billingAddress IS NULL

generates the SQL
SELECT DISTINCT t0_l.id 
FROM LINEITEMEJB t0_l, 
  ORDER_DATA t1_l_order 
WHERE (t1_l_order.BILLING_ADDRESS IS NULL) 
AND (t1_l_order.BILLING_ADDRESS=t1_l_order.id)

which results in an SQLException because there is no ID
column in ORDER_DATA but in reality it is just totally
messed up.

----------------------------------------------------------------------

Comment By: Nobody/Anonymous (nobody)
Date: 2003-06-04 15:05

Message:
Logged In: NO 

I have a similar situation with a 1-M.

Head looks like:

/**
 * The Entity bean represents a Style of piece of recorded 
music.
 *
 * @author Rick Boykin
 * @version $Revision$
 *
 * @ejb:bean name="Style"
 *           display-name="Style representing a musical style"
 *           type="CMP"
 *           cmp-version="2.x"
 *           view-type="both"
 *           jndi-name="StyleRemoteHome"
 *           local-jndi-name="StyleLocalHome"
 *           primkey-field="id"
 *           schema="Style"
 *           reentrant="true"
 *
 * @ejb:pk class="java.lang.Integer" generate="false"
 *
 * @ejb:security-identity use-caller-identity="true"
 *
 * @ejb:transaction type="Required"
 *
 * @ejb:data-object 
extends="com.epitome.wax.ejb.interfaces.AbstractData"
 *                  setdata="true"
 *
 * @ejb:finder signature="java.util.Collection findAll()"
 *
 * @ejb:finder signature="java.util.Collection findAllParents()"
 *  query="SELECT OBJECT(style) FROM Style style WHERE 
style.id IS NOT NULL AND style.subStyles IS EMPTY"
 *  result-type-mapping="Local"
 *  unchecked="true"
 *
 * @jboss:create-table create="true"
 * @jboss:remove-table remove="false"
 *
 **/

Applicable fields look like....

    /**
     * Retrieve the Style's Parent.
     *
     * @return Returns a StyleLocal representing the Parent
     * of this Style.
     *
     * @ejb:persistent-field
     * @ejb:interface-method view-type="local"
     * @ejb:relation name="Style-Style" role-
name="StyleHasParentStyle"
     * @jboss:relation related-pk-field="id" fk-column="id"
     */
    public abstract StyleLocal getParent();
    
    /**
     * Set the Style's Parent.
     *
     * @param style The Parent of this Style.
     *
     */
    public abstract void setParent( StyleLocal style );
    
    /**
     * Retrieve the Style's SubStyles.
     *
     * @return Returns a StyleLocal Collection representing 
the SubStyles
     * of this Style.
     *
     * @ejb:persistent-field
     * @ejb:interface-method view-type="local"
     * @ejb:relation name="Style-Style" role-
name="StyleHasSubStyles"
     */
    public abstract Collection getSubStyles();
    
    /**
     * Set the Style's Parent.
     *
     * @param style The Parent of this Style.
     */
    public abstract void setSubStyles( Collection styles );

I've tried several incarnations of the query.

EJB-QL: SELECT OBJECT(style) FROM Style style WHERE 
style.id IS NOT NULL AND style.subStyles IS EMPTY

yelds...

SQL: SELECT DISTINCT t0_style.id FROM Style t0_style LEFT 
JOIN Style t1_style_subStyles ON 
t0_style.id=t1_style_subStyles.id WHERE t0_style.id IS NOT 
NULL AND t1_style_subStyles.id IS NULL

And:

EJB-QL: SELECT OBJECT(style) FROM Style style WHERE 
style.parent IS NULL

yields...

SQL: SELECT t0_style.id FROM Style t0_style WHERE 
t0_style.id IS NULL

I'm using MySQLDS on jboss 3.2.1 - tomcat 4.x.x.




----------------------------------------------------------------------

Comment By: Sacha Labourey (slaboure)
Date: 2003-01-29 00:24

Message:
Logged In: YES 
user_id=95900

I suspect this bug to occur in other situations as well and not 
strictly in this "multi-step" schema.

Here is the situation:
Given a EJB A, which builds a composite recursive 
datastructure, something like: 

setId(Long id) // The unique identifier of A
getId() : Long 

setParent(A)
getParent() : A

setChildren(Collection ofAs)
getChildren() : Collection 

If you want to query all A's, which do not have a parent: 

SELECT OBJECT(a) FROM A a WHERE a.parent IS NULL

Executing this EJB-QL i always get an empty collection. 

The SQL, which is generated is something like: 

SELECT t0_a.id FROM A t0_a WHERE (t0_a.parent IS 
NULL) AND (t0_a.parent=t0_a.id)

which is wrong in this case.




----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=376685&aid=676533&group_id=22866


-------------------------------------------------------
This SF.net email is sponsored by:  Etnus, makers of TotalView, The best
thread debugger on the planet. Designed with thread debugging features
you've never dreamed of, try TotalView 6 free at www.etnus.com.
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to