Java 如何将枚举值传递到与另一个表具有外键关系的JPA表中?
我有一个Java(使用JPA)项目,如下所示。 在数据库端: TableName-用户详细信息Java 如何将枚举值传递到与另一个表具有外键关系的JPA表中?,java,spring-data-jpa,foreign-keys,jpql,Java,Spring Data Jpa,Foreign Keys,Jpql,我有一个Java(使用JPA)项目,如下所示。 在数据库端: TableName-用户详细信息 存储ID、订购的项目数量和状态 状态取自另一个名为status的表 在Java端: UserRepository是JPA,它有两种方法将用户数据存储到 数据库,并根据状态检索用户数据 一个名为Status的枚举,相当于数据库表Status 问题: 如果我想将用户数据存储到数据库中,我应该如何传入status字段 例如,我是否应该执行userRepository.storeToUserDeta
- 存储ID、订购的项目数量和状态李>
- 状态取自另一个名为status的表
- UserRepository是JPA,它有两种方法将用户数据存储到 数据库,并根据状态检索用户数据
- 一个名为Status的枚举,相当于数据库表Status
例如,userRepository.findUserDetailsByStatusIn(Status.CREATED)1。您可以将其添加到project
Service
类的逻辑中,并从主代码中使用它。反过来,类Service
应该使用接口Reposytory
public enum Status {
CREATED(200), ACTIVE(207), SUSPENDET(400), FINDED(500);
private long code;
public long getCode() {
return code;
}
StatusEnum(long code){
this.code = code;
}
}
三,。创建类
状态码
@Entity(name = "status")
public class StatusCode {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "status")
private long status;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getStatusCode() {
return status;
}
public void setStatusCode(String statusCode) {
this.status = statusCode;
}
}
User
中,对状态使用setter和getter
:存储库:
public interface UserRepository extends JpaRepository<User, Long> {
}
public interface UserRepository扩展了JpaRepository{
}
方法getOne()
和update()
扩展自JpaReposytory interbase
@OneToOne(cascade = CascadeType.ALL)
private StatusCode statusCode;
public void setStatus(Status status){
StatusCode temp = new StatusCode();
temp.setStatusName(status.name());
temp.setId(status.getCode());
this.setStatus(temp);
}
public Status getStatus(){
if statusCode != null{
return Satus.valueOf(statusCode.getName())}
return null;
}
public interface UserRepository extends JpaRepository<User, Long> {
}