我有一个名为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
表中,但我之前用于加入表的列。
表
我可以设置除categoryId,categoryName,createdDate,lastUpdatedDate
之外的Category
实体中的所有值parent_category_id
,我无法创建getter和setter。当我尝试创建它时显示错误已使用parent_category_id
列名称。此错误的原因是我已将其用于加入。
帮助我使用相同的实体插入或告诉我将是我 需要为那些感觉不到的东西创建一个单独的实体 合适吗?
用户请求示例:
{
"categoryName":"cricket",
"parentCategoryId":15
}
答案 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)