I am having troubles with persisting an entity in a web flow with Spring Roo 2.0.0.RC2.
With Roo 2.0, I have generated an application which shall register a user at the end of a webflow.
Here are my roo commands:
entity jpa --class ~.model.AppUser --serializable
field string --fieldName username --notNull
web flow --flowName registrationProcess --class ~.RegistrationProcessFormBean`
This is my flow.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="http://www.springframework.org/schema/webflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" start-state="create-appuser" xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.4.xsd">
<persistence-context />
<on-start>
<set name="flowScope.registrationProcessFormBean" value="new de.xx.www.training.RegistrationProcessFormBean()"/>
<set name="flowScope.appUser" value="new de.xx.www.training.model.AppUser()"/>
</on-start>
<view-state id="create-appuser" model="appUser" view="registrationprocess/create-appuser">
<transition on="success" to="end-state" />
</view-state>
<end-state id="end-state" view="registrationprocess/end-state" commit="true"/>
</flow>
Note: I am aware that it is better to use a dto instead of an entity. Currently, I am just trying to find a simple way to persist the entity AppUser.
My questions:
- How to persist the entity? Is it possible to use the generated repository, e.g. AppUserRepository? (It is not serializable.)
- If needed, how to configure HibernateFlowExecutionListener in flowRegistry in Roo 2.0?
Please advise. Thanks in advance!
Update 02/05/2019
I did as suggested.
<on-start>
<set name="flowScope.appUser" value="new de.test.model.AppUser()"/>
</on-start>
<!-- A sample view state -->
<view-state id="view-state-1" model="appUser" view="registrationprocess/view-state-1">
<transition on="success" to="view-state-2">
<evaluate expression="appUserServiceImpl.save(appUser)" result="flowScope.appUser" />
</transition>
</view-state>
Result:
org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 19): Method call: Method save(de.test.model.AppUser) cannot be found on de.test.service.impl.AppUserServiceImpl$$EnhancerBySpringCGLIB$$10b2028b type
What am I doing wrong?
The method exists.
public class AppUserServiceImpl implements AppUserService {
public AppUser save(AppUser entity) {
return getAppUserRepository().save(entity);
}
Thank you for some hints.
Update 02/06/2019
As a work around, I disabled spring-boot-devtools in pom.xml (see https://github.com/spring-projects/spring-boot/issues/7912).
First define your entities and generate repository and service layers :
Now your service bean (
myBeanServiceImpl) is available in the context.You can use it to save your entity as follow in your flow: