gpt4 book ai didi

java - 在具有 hibernate 功能的模型(域)类中使用枚举 - 无法解析属性 - 异常

转载 作者:行者123 更新时间:2023-11-30 08:27:33 25 4
gpt4 key购买 nike

在表中,我正在为应用、选择、未选择等保存整数值……我想的是在 Java Domain 类中使用 Enum。我尝试实现它。当我从 DAO 调用这个域时,我遇到了一些奇怪的错误。请在下面找到代码。

import java.util.Date;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
import javax.persistence.*;
import static javax.persistence.GenerationType.IDENTITY;
@Entity
@Table(name="xxxxxx")
public class JobApplied{
public enum RSVP {
APPLIED_REJECTED(0),
APPLIED_SHORTLISTED(1),
SHORTLISTED_SELECTED (3),
SHORTLISTED_IN_PROGRESS (4),
SHORTLISTED_ON_HOLD (5),
SHORTLISTED_REJECTED (6);

private int value;
RSVP(int value) { this.value = value; }
public int getValue() { return value; }
public static RSVP parse(int id) {
RSVP rsvp = null;
for (RSVP item : RSVP.values()) {
if (item.getValue()==id) {
rsvp = item;
break;
}
}
return rsvp;
}
};

@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id",unique = true, nullable = false)
private long id;

@ManyToOne(fetch= FetchType.LAZY)
@JoinColumn(name="job_opportunity_id")
@NotFound(action= NotFoundAction.IGNORE)
private JobOpportunity jobOpportunity;

@ManyToOne(fetch= FetchType.LAZY)
@JoinColumn(name="user_id")
@NotFound(action= NotFoundAction.IGNORE)
private Users users;

@Column(name="status")
private int RSVP_Status;

public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}

public JobOpportunity getJobOpportunity()
{
return jobOpportunity;
}
public void setJobOpportunity(JobOpportunity jobOpportunity)
{
this.jobOpportunity=jobOpportunity;
}

public Users getUsers()
{
return users;
}
public void setUsers(Users users){
this.users=users;
}

public RSVP getRSVP_Status () {
return RSVP.parse(this.RSVP_Status);
}
public void setRSVP_Status(RSVP rsvp) {
this.RSVP_Status = rsvp.getValue();
}
public void setRSVP_Status(int rSVP_Status) {
RSVP_Status = RSVP.parse(rSVP_Status).getValue();
}
}

在使用该方法调用上述域类时,

public List<JobApplied> getAppliedCandidates(long jobId) {
Map<String, Object> conditions = getConditionsTemplate();
conditions.put("status", (Integer)JobApplied.RSVP.APPLIED_SHORTLISTED.getValue());
//Error is not because of the above line.
conditions.put("jobOpportunity.jobOpportunityId", jobId);
return findByCriteria(null, conditions); //stack trace points the error in this line.
}

我收到这个错误,

org.hibernate.QueryException: could not resolve property: status of: com.xxxx.xxxxx.domain.JobApplied

请指出我错在哪里。希望我的问题很清楚。在此先感谢您。

最佳答案

枚举的变化

public enum RSVP {
APPLIED_REJECTED,
APPLIED_SHORTLISTED,
SHORTLISTED_SELECTED,
SHORTLISTED_IN_PROGRESS,
SHORTLISTED_ON_HOLD,
SHORTLISTED_REJECTED;

private int status;

public int getValue() {
return status;
}
}

域类的变化

    @Enumerated(EnumType.ORDINAL)
@Column(name="status")
private RSVP rsvpStatus;

public RSVP getRsvpStatus() {
return this.rsvpStatus;
}

public void setRsvpStatus(RSVP rsvp) {
this.rsvpStatus = rsvp;
}

DAO 调用的变化

conditions.put("rsvpStatus", RSVP.APPLIED_SHORTLISTED);

表格变化

Keep "status" column in table as int datatype

在 Hibernate 中集成枚举类型非常容易。如果您使用 EnumType.STRING 进行注释,那么它会将字符串值存储在数据库中。

关于java - 在具有 hibernate 功能的模型(域)类中使用枚举 - 无法解析属性 - 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20785373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com