首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将枚举值传递到具有外键关系的JPA表中?

如何将枚举值传递到具有外键关系的JPA表中?
EN

Stack Overflow用户
提问于 2018-10-10 16:29:53
回答 1查看 496关注 0票数 1

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

数据库端的

TableName -用户详细信息

  • 商店ID,没有订购的物品和状态。
  • 状态从另一个名为status的表中提取。

Java端的

  • UserRepository是JPA,它有2种方法将用户数据存储到DB中,并根据状态检索用户数据。
  • 与DB表状态等效的称为状态的枚举。

问题:

  1. 如果要将用户数据存储到DB中,应该如何传递状态字段?

我应该做userRepository.storeToUserDetails("1","John",Status.CREATED)吗?

  1. 如果要根据状态检索用户数据,如何传递状态字段?

例如userRepository.findUserDetailsByStatusIn(Status.CREATED)

EN

回答 1

Stack Overflow用户

发布于 2018-10-10 17:23:05

1.您可以添加到项目Service类的逻辑中,并从主代码中使用它。反过来,类Service应该使用接口Reposytory

  1. 添加到代码的状态枚举值 公共枚举状态{ CREATED(200),ACTIVE(207),SUSPENDET(400),FINDED(500);私有长代码;公共长getCode() {返回码;}StatusEnum(长码){ this.code =this.code;}}
代码语言:javascript
运行
复制
    public class UserService{
    @Autovired
    private UserRepository userRepository;

    public storeToUserDetails(long id, String name, Status status){
        User user = userRepository.getOne(id);
        user.setName(name);
        user.setStatus(status);
        userRepository.update(user);
    }
}
  1. 创建 StatusCode
代码语言:javascript
运行
复制
@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;
}
}
  1. 在实体User中,Status使用setter和getter
代码语言:javascript
运行
复制
@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;
}

储存库:

代码语言:javascript
运行
复制
public interface UserRepository extends JpaRepository<User, Long> {
}

方法getOne()update()从JpaReposytory干扰酶扩展而来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52744889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档