gpt4 book ai didi

java - Playframework2 Ebean : Why doesn't fetch related objects?

转载 作者:行者123 更新时间:2023-12-01 12:39:58 25 4
gpt4 key购买 nike

这是我的用户:

package models.user;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import play.data.validation.Constraints.MaxLength;
import play.data.validation.Constraints.MinLength;
import play.data.validation.Constraints.Required;
import play.db.ebean.Model;

@Entity
@Table(name = "T_USER")
public class User extends Model {
@Id
public Long id;

@Required
@MaxLength(30)
@MinLength(4)
public String username;

@Required
@MaxLength(30)
@MinLength(4)
public String password;

@ManyToOne(fetch = FetchType.EAGER)
@Column(nullable = false)
public Role role;

public static Finder<Long, User> find = new Finder<Long, User>(Long.class, User.class);

public User() {
}

public User(String username, String password, Role role) {
this.username = username;
this.password = password;
this.role = role;
}

@Override
public String toString() {
return "[Tying to login : ] [" + username + " - " + password + "]";
}
}

在我的 Controller 中,我想获取用户的角色实例,所以这就是我所做的:

public static Result modules(Long id) {
User user = User.find.byId(id);
if ("Super User".equalsIgnoreCase(user.role.name)) {
return ok();
} else {
return forbidden();
}
}

问题是,user.role.name为空,但是user.role.id在这里是正确的,为什么EBean不帮助我获取用户的角色

最佳答案

我在不同的场合遇到过这个问题。您可以执行以下操作:

首先,尝试用私有(private)字段替换公共(public)字段,并添加适当的 getter 和 setter(无论如何,这在使用 Java 时是一个很好的模式)。

其次,您可以编写一个小助手来查找/获取所需的信息。假设您需要通过 ID 获取用户并执行此字符串检查。然后在您的 User 类中,您可以编写如下方法:

public static User findById(Long id) {
return Ebean.find(User.class)
.fetch("role")
.where()
.eq("id", id)
.findUnique();
}

之后,只需使用方法:

public static Result modules(Long id) {
User user = User.findById(id);
if ("Super User".equalsIgnoreCase(user.getRole().getName())) {
return ok();
} else {
return forbidden();
}
}

关于java - Playframework2 Ebean : Why doesn't fetch related objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201385/

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