Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将枚举值传递到与另一个表具有外键关系的JPA表中?_Java_Spring Data Jpa_Foreign Keys_Jpql - Fatal编程技术网

Java 如何将枚举值传递到与另一个表具有外键关系的JPA表中?

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

我有一个Java(使用JPA)项目,如下所示。

在数据库端:

TableName-用户详细信息

  • 存储ID、订购的项目数量和状态
  • 状态取自另一个名为status的表
在Java端:

  • UserRepository是JPA,它有两种方法将用户数据存储到 数据库,并根据状态检索用户数据

  • 一个名为Status的枚举,相当于数据库表Status

问题:

  • 如果我想将用户数据存储到数据库中,我应该如何传入status字段
  • 例如,我是否应该执行userRepository.storeToUserDetails(“1”,“John”,Status.CREATED)

  • 如果我想根据状态检索用户数据,如何传递状态字段

  • 例如,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> {
    }