[
https://jira.jboss.org/jira/browse/JBSEAM-4057?page=com.atlassian.jira.pl...
]
Valerie Griffin commented on JBSEAM-4057:
-----------------------------------------
Actually, there are several things included in this request. I think each of them chould
be implemented. I grouped them because the code to implement them is all in the same
module.
wrapInstance
Sometimes, my code creates an Entity that needs to be saved or updated in the database.
The cleanest way to save this Entity is to create an EntityHome around it. Sometimes,
multiple related Entity objects are created and saved as part of a single action. Other
times, I've copied a list of objects related to one Entity to have a similar
relationship to a different Entity. These objects cannot always be saved by cascading
them.
Originally, I had created the EntityHome objects using its parameterless constructor.
Then, I attached the Entity to that object. It didn't completely work From forum
comments, I'm not the only person who tried to create EntityHome objects this way, so
adding the function would save others from the missteps I made. I'm found the
Component.getInstance method, which I'm using here, in response to a forum comment.
update/persist catch InvalidStateException instances
This makes it possible to see hibernate validation errors that are caught on persist and
update as messages. This is especially useful for fields that are not initialized by the
GUI. I didn't put corresponding remove code into the source, but I think it would be
useful.
Other changes to update/persist
It's really an error if the instance is null on an update or persist and should be
treated as such.
It's often useful to know where to insert code for pre- or post-processing, especially
when some people on the team don't initially know where to put the code.
Add static method EntityHome.wrapInstance and add location for
update/persist processing
----------------------------------------------------------------------------------------
Key: JBSEAM-4057
URL:
https://jira.jboss.org/jira/browse/JBSEAM-4057
Project: Seam
Issue Type: Feature Request
Components: Tools
Affects Versions: 2.1.1.GA
Environment: Any
Reporter: Valerie Griffin
Attachments: EntityHome.java.ftl
Constructing an EntityHome object really doesn't provide a completely-initialized
object. I needed to create EntityHome objects around existing @Entity objects. Once
created, these objects can be saved in the database. I created a new static method in the
code generated by EntityHome. It's called wrapInstance and , in use, is defined as:
static public MyTblHome wrapInstance(MyTbl dat);
If there's an id in the MyTbl instance, it is used. Otherwise, an id is created and
used.
I also changed update and persist:
If we get there with a null instance, it's an error so we return
"invalid".
There are commented locations for pre- and post-update code. For example, the code can
automatically save the ID of the user performing an update.
There's a catch for validation errors (hibernate InvalidStateException instances). If
one is found, all InvalidValue lines are logged and captured foe message output.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira