db-torque-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thomas Fox (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TORQUE-182) Additional methods for handling associated objects
Date Tue, 02 Oct 2012 04:01:10 GMT

    [ https://issues.apache.org/jira/browse/TORQUE-182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13467459#comment-13467459

Thomas Fox commented on TORQUE-182:

So there should be a new method e.g. author.setAndSaveBooks(Collection<Book> newAssociatedBooks)

Saving amkes sense because deletion of other objects also happens during the method.

There might be the following special cases to consider for the delete part
- singular primary key: The delete can be done like "delete from book where author_id=? and
book_id not in (?,...?);
- composite primary key (e.g. in m:n association table). The deletes must be done like  "delete
from book where author_id=? and not ((book_pk1=?and book_pk2=?) or (book_pk1=? and book_pk2=)
or ...)
- no primary key or primary key disregarded (e.g. by boolean flag): delete like composite
primary key but with value attrs instead of pk attrs

Updating/saving is done by loading all remaining associated objects and comparing them to
the newAssociatedBooks.
Either by pk values or by value attrs, depending whether pk exists and is not disregarded.
If a equivalent object is found in both lists, the modified flag and the new flag must be
set in the newAssociatedBooks entry accordingly.
Perhaps there should be also a forceSave mode which saves all associated objects, regardless
whether they are modified or not (note that loading is still necessary for that, to decide
between update and insert)

> Additional methods for handling associated objects
> --------------------------------------------------
>                 Key: TORQUE-182
>                 URL: https://issues.apache.org/jira/browse/TORQUE-182
>             Project: Torque
>          Issue Type: New Feature
>            Reporter: Thomas Fox
>            Assignee: Thomas Fox
> Assuming complexObjectModel=true and objectIsCaching=true (the default settings for generation)
> Consider a table (book) having a foreign key on another table (author).
> Couurently, in the Author object, the method addBook() is implemented, by which a book
can be associated with the author and which adds it to the collection obtained by getBooks().
These books are also saved when the author object is saved.
> However, there are no methods by which associations can be removed, an associated book
can be deleted or all associated books can be deleted.
> It would be nice if one could do these operations on an object level and these operations
would be written to the database on save().
> The first possibility to implement this would be to generate methods removeBook(), deleteBook()
and deleteAllBooks().
> The other possibility would be to use a custom list object which intercepts the calls
to the add(), remove() etc methods and translates these operations to database operations
(with the problem that remove() can be interpreted as removing the association as well as
deleting the associated object, my preference being the latter)

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org

View raw message