0

2 つのテーブルがGroup(Parent)ありType(Child)、それらは によってマッピングされていGroupIdます。これは、Hibernate@OneToManyマッピングによって行われます。

私の問題は、JSPTypeNameでタイプ テーブルのレコードを表示しているときに&が表示されていることです。これには Class をGroupId使用しているためです。TypeEntityTypeNameGroupNameGroupId

好きなだけシンプルに:SELECT A.TYPE_NAME, B.GROUP_NAME FROM TYPE A, GROUP B WHERE A.GROUP_ID = B.GROUP_ID;

現在私は使用しています:

 List<UserTypeEntity> typeList = criteria.add(Restrictions.eq("userActive", 
"Y").ignoreCase()).addOrder(Property.forName("userTypeName").asc()).list();

hibernate3を使用してどのようにアプローチできますか

私の TypeEntity クラス:

@Entity
@Table(name="USER_TYPE_MSTR")
public class UserTypeEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="USER_TYPE_ID")
    private int userTypeId;

    @Column(name="USER_TYPE")
    private String userTypeName;

    @Column(name="USER_TYPE_DESC")
    private String userTypeDesc;

//  @ManyToOne
    @Column(name="USER_GRP_ID")
    private int userGroupId;

          ..... Setter Getters....
}

そして私のGroupEntityクラス:

@Entity
@Table(name="USER_GROUP_MSTR")
public class UserGroupEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="USER_GRP_ID")
    private int userGroupId;

    @Column(name="USER_GRP")
    private String userGroupName;

    @Column(name="USER_GRP_DESC")
    private String userGroupDesc;


    @Column(name="ACTIVE")
    private String userActive;

    @OneToMany(cascade=CascadeType.ALL)
    @JoinTable( name                ="USER_GROUP_TYPE", 
                joinColumns         = {@JoinColumn(name="GROUP_ID", referencedColumnName="USER_GRP_ID")},
                inverseJoinColumns  = {@JoinColumn(name="TYPE_ID",  referencedColumnName="USER_TYPE_ID")}
    )
    private Set<UserTypeEntity> userTypeEntities;

    /**
     * @return the userTypeEntities
     */
    public Set<UserTypeEntity> getUserTypeEntities() {
        return userTypeEntities;
    }

    /**
     * @param userTypeEntities the userTypeEntities to set
     */
    public void setUserTypeEntities(Set<UserTypeEntity> userTypeEntities) {
        this.userTypeEntities = userTypeEntities;
    }
          .... Getters & Setters ....
}

私のDAOクラス:

public class UserTypeDAO {
private List<UserTypeEntity> typeList = null;
private Criteria criteria;
@SuppressWarnings("unchecked")
    public List<UserTypeEntity> getUserTypes() throws HibernateException{
        log.info("...In UserTypeDAO.getUserTypes...");
        try {
            criteria = ConnectionFactory.getSessionfactory().openSession().createCriteria(UserTypeEntity.class);
            typeList = criteria.add(Restrictions.eq("userActive", "Y").ignoreCase()).addOrder(Property.forName("userTypeName").asc()).list();
        } catch (HibernateException e) {
            e.printStackTrace();
        }
        return typeList;
    }
}

私のアクションクラス:

public class UserTypeAction extends ActionSupport implements Preparable{
private List<UserTypeEntity> typeList;
@SkipValidation
    public String userTypeView() throws Exception{
        try {
            typeList = (List<UserTypeEntity>)UserTypeController.getUserTypes();
            if(typeList.size() > 0){
                setTypeList(typeList);              

                result = SUCCESS;
            }else {
                result = SUCCESS;
            }
        } catch (Exception e) {
            result = ERROR;
            e.printStackTrace();
        }
        return result;
    }
}

そして私のJSP:

<s:if test="%{typeList.size() != 0}">
                <s:iterator value="typeList" var="type">
                    <tr>
                        <td align="left"><s:property value="userTypeName"/></td>
                        <td align="left"><s:property value="userTypeDesc"/></td>
                        <td align="left"><s:property value="userGroupId"/></td>
                        <td align="center"><s:date name="userCreatedDate" format="dd-MMM-yyyy" /></td>
                        <td align="center"><s:date name="userModifiedDate" format="dd-MMM-yyyy" /></td>
                        <td align="center"><b><a href="#" onclick="javascript:userTypeEdit('edit','${userTypeId}','${userTypeName}','${userTypeDesc}','${userGroupId}','${userCreatedDate}','${userModifiedDate}');">Edit</a></b>
                            &nbsp;&nbsp;|&nbsp;&nbsp;<b><a href="#" onclick="javascript:userTypeDelete('userTypeDelete.action?typeId=${userTypeId}');">Delete</a></b>
                        </td>
                    </tr>
                </s:iterator>
            </s:if>
            <s:else>
                <tr>
                    <td colspan="100%"><div style="color:red;">No Results found</div></td>
                </tr>
            </s:else>
4

1 に答える 1

0

TypeEntityクラスで作成しました

@ManyToOne
    @JoinColumn(name="USER_GRP_ID")
    private UserGroupEntity userGroupEntity;

そして GroupEntity では:

@OneToMany(mappedBy="userGroupEntity")
    private Set<UserTypeEntity> userTypeEntities;

次に、JSPで次のようにアクセスしました:

<td align="left"><s:property value="userGroupEntity.userGroupDesc"/></td>

そして、私の問題は解決しました...

于 2014-06-19T11:03:00.680 に答える