Hi Matt,

 In Appfuse 2.0 struts, related to Hibernate i have one problem with the
relation. i am unable to explain my problem because of this reason i copy
the program for your reference.


POJO Class:

public class Employee extends BaseObject implements Serializable {

    @Id
    @GeneratedValue (strategy=GenerationType.AUTO)
    @Column (name="EmployeeID")
    private Long id;
    @Column (name="FirstName",length=50,nullable=false)
    private String firstName;
    @Column (name="LastName",length=50,nullable=false)
    private String lastName;
    @Column (name="Email",length=255,nullable=false)
    private String email;
    @Column (name="PrimaryContactNumber",length=50,nullable=false)
    private String primaryContact;
    @Column (name="SecondaryContactNumber",length=50)
    private String secondaryContact;
    @ManyToOne (targetEntity=Branch.class)
    @JoinColumn (name="BranchID")
    private Branch branch;
    @ManyToOne (targetEntity=Designation.class)
    @JoinColumn (name="DesignationID")
    private Designation designation;
    @ManyToOne (targetEntity=Employee.class,optional=true)
    @JoinColumn(name="ManagerID",referencedColumnName="EmployeeID")
    private Employee manager;
    @Column (name="EmployeePriority",nullable=false)
    private Long priority;
    @Column (name="Active")
    private boolean active;

   ...........
   ...........
   ...........

} 

EmployeeForm.jsp

<s:form id="employeeForm" action="saveEmployee" method="post"
validate="true">
    <li style="display: none">
        <s:hidden key="employee.id"/>
        <%--<s:hidden key="employee.manager.id"/>--%>

    </li>
    <s:checkbox key="employee.active" cssClass="checkbox" required="true"
labelposition="left"/>
    <s:textfield key="employee.firstName" required="true" cssClass="text
medium" maxlength="50"/>
    <s:textfield key="employee.lastName" required="true" cssClass="text
medium" maxlength="50"/>
    <s:textfield key="employee.primaryContact" required="true"
cssClass="text medium" maxlength="50"/>
    <s:textfield key="employee.secondaryContact" cssClass="text medium"
maxlength="50"/>
    <s:textfield key="employee.email" required="true" cssClass="text large"
maxlength="255"/>
    <s:select key="employee.branch.id" list="branches" listKey="id"
listValue="name" required="true" cssClass="select medium"/>
    <s:select key="employee.designation.id" list="designations" listKey="id"
listValue="description" required="true" cssClass="select medium"/>
    <s:select key="employee.manager.id" list="managers" listKey="id"
listValue="firstName" cssClass="select medium"/>
    <s:textfield key="employee.priority" required="true" cssClass="text
small" maxlength="6"/>

    <li class="buttonBar bottom">
        <s:submit cssClass="button" method="save" key="button.save"
theme="simple"/>
        <c:if test="${not empty employee.id}">
            <s:submit cssClass="button" method="delete" key="button.delete"
                onclick="return confirmDelete('Employee')" theme="simple"/>
        </c:if>
        <s:submit cssClass="button" method="cancel" key="button.cancel"
theme="simple"/>
    </li>
</s:form>

EmployeeAction.java

     public String save() {
        if (cancel != null) {
            return "cancel";
        }

        if (delete != null) {
            return delete();
        }

        boolean isNew = (employee.getId() == null);
        try {
            log.debug("Manager === "+employee.getManager());
            String managerId =
getRequest().getParameter("employee.manager.id");
            log.debug("id === " + managerId);
            employeeManager.save(employee);
            saveMessage(getText(isNew ? "employee.added" :
"employee.updated"));
            return SUCCESS;
        } catch (Exception e) {
            saveErrors (getText("employee.error"));
            return INPUT;
        }
    }

Employee-Validation.xml

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator
1.0.2//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd";>
<validators>
    <field name="employee.firstName">
        <field-validator type="requiredstring">
            <message key="errors.required"/>
        </field-validator>
    </field>
    <field name="employee.lastName">
        <field-validator type="requiredstring">
            <message key="errors.required"/>
        </field-validator>
    </field>
    <field name="employee.primaryContact">
        <field-validator type="requiredstring">
            <message key="errors.required"/>
        </field-validator>
    </field>
    <field name="employee.email">
        <field-validator type="requiredstring">
            <message key="errors.required"/>
        </field-validator>
         <field-validator type="email">
            <message key="errors.email"/>
        </field-validator>
    </field>
    <field name="employee.branch.id">
        <field-validator type="required">
            <message key="errors.required"/>
        </field-validator>
    </field>
    <field name="employee.designation.id">
        <field-validator type="required">
            <message key="errors.required"/>
        </field-validator>
    </field>
    <field name="employee.priority">
        <field-validator type="required">
            <message key="errors.required"/>
        </field-validator>
    </field>
</validators>

If i am trying to create a new record, it doesn't save the records and it
throws an nullpointerException at the isNew and the Error Log is:

Error Log:

http://appfuse.547863.n4.nabble.com/file/n2237105/ErrorLog_create.txt
ErrorLog_create.txt 

When i'm trying to update then it doesn't throws any exception but it is not
updating the manager column with the selection from dropdown menu.

it gives an error like 

ERROR [btpool0-1] InstantiatingNullHandler.nullPropertyValue(110) | Could
not create and/or set value back on to object
org.springframework.beans.TypeMismatchException: Failed to convert property
value of type [$Proxy27] to required type [com.trident.auto.model.Employee]
for property 'manager'; nested exception is
java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy27]
to required type [com.trident.auto.model.Employee] for property 'manager':
no matching editors or conversion strategy found


please suggest me to solve this problem, or suggest me ant other ways to
solve this problem.

Thanks in Advance ....




-----
Regards,
Sudhakargupta Somu.
-- 
View this message in context: 
http://appfuse.547863.n4.nabble.com/Hibernate-ManyToOne-Problem-tp2237105p2237105.html
Sent from the AppFuse - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@appfuse.dev.java.net
For additional commands, e-mail: users-h...@appfuse.dev.java.net

Reply via email to