Hibernate:一个Entitiy类用于多种用途?

时间:2015-07-27 07:45:13

标签: java mysql spring hibernate

我有一个名为Category的实体类。我之前用它来加入另一个实体。现在我必须使用相同的Category实体将数据插入Category表。< / p>

  

Category.java

@Entity
@Table(name = "category")
public class Category implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "category_id")
    private Integer categoryId;

    @Column(name = "category_name")
    private String categoryName;

    @NotFound(action=NotFoundAction.IGNORE)
    @JsonIgnore
    @ManyToOne
    @JoinColumn(name = "parent_category_id")
    private Category parentCategory;

    @Column(name = "created_date")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date createdDate;

    @Column(name = "last_updated_date")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date lastUpdatedDate;

    @OneToMany(mappedBy = "category")
    private List<Events> events;

    //Getters and Setters
}
  

插入类别的方法

 @Transactional
    public UserResponse createCategory(SubmitReviewRequest createCategoryRequest) throws SQLException, ClassNotFoundException, IOException {
        Category category = new Category();
        UserResponse userResponse = new UserResponse();
        if (createCategoryRequest != null) {
            category.setCategoryName(createCategoryRequest.getSubCategory());
            // category.setParenCategoryId(Integer.parseInt(createCategoryRequest.getMainCategory()));
            int id = adminServiceDao.saveCategory(category);
            userResponse.setCode(WeekenterConstants.SUCCESS_CODE);
            userResponse.setMessage("Success");
            userResponse.setId(id);
        }

        return userResponse;
    }

问题是我必须在parent_category_id实体中设置Category以将数据保存到Category表中,但我之前用于加入表的列。

  

enter image description here

我可以设置除categoryId,categoryName,createdDate,lastUpdatedDate之外的Category实体中的所有值parent_category_id,我无法创建getter和setter。当我尝试创建它时显示错误已使用parent_category_id列名称。此错误的原因是我已将其用于加入。

  

帮助我使用相同的实体插入或告诉我将是我   需要为那些感觉不到的东西创建一个单独的实体   合适吗?

     

用户请求示例:

{
"categoryName":"cricket",
"parentCategoryId":15
}

2 个答案:

答案 0 :(得分:1)

从您的dao中查找父类别实体,然后使用setter设置父实体以设置父类别,而不是尝试设置父类别ID。例如

Category parentCategory = adminServiceDao.findCategory(Integer.parseInt(createCategoryRequest.getMainCategory());
category.setParentCategory(parentCategory);

答案 1 :(得分:1)

如果我理解正确,你会错误地解决它。在hibernate中,正确的方法是读取父类别,并使用其ID(在您的情况下为1)具有持久的父类别对象,然后将您尝试保留的此类别设置为{{1} }。

parentCategory.setParentCategory(category)