Twirl テンプレート (Play Framework Java - 2.5.10 を使用) で 1 対 1 の関係のデータを表示しようとして困っています。基本的に私は User モデルを持っています:
package models;
import java.sql.Date;
import javax.persistence.*;
import com.avaje.ebean.Model;
@Entity
@Table(name = "users")
public class User extends Model {
@Id
@Column(name = "id")
public Long id;
@Column(name = "first_name")
public String firstName;
@Column(name = "middle_name")
public String middleName;
@Column(name = "last_name")
public String lastName;
@Column(name = "date_of_birth")
public Date dateOfBirth;
@Column(name = "sex")
public String sex;
@OneToOne
@JoinColumn(name = "time_zone_id")
public TimeZone timeZone;
public static Finder<Long, User> find = new Finder<>(User.class);
}
そしてファーマーモデル:
package models;
import com.avaje.ebean.Model;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name="farmers")
public class Farmer extends Model {
public enum Status {INACTIVE, ACTIVE}
@Id
@Column(name="id")
public Long id;
@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="user_id")
public User user;
@Column(name="profile_pic_url")
public String profilePicUrl;
@Column(name="access_url")
public String accessUrl;
@Column(name="status")
public String status = Status.INACTIVE.name();
@OneToMany(mappedBy = "farmer", targetEntity = Farm.class, fetch = FetchType.LAZY)
public List<Farm> farms;
public static Finder<Long, Farmer> find = new Finder<>(Farmer.class);
public static List<Farmer> getAllActive() {
return Farmer.find.where().eq("status", Status.ACTIVE.name()).findList();
}
}
フェッチ タイプが熱心に設定された User モデルとの 1 対 1 があることに注意してください。ここで、テンプレートに農家のデータを表示したいと思います。農家の名前は、実際には関連付けられた User モデルの名前です。
だから私は私のコントローラーでこれをしました:
public class FarmerController extends Controller {
public Result all() {
return ok(farmers.render(Farmer.getAllActive()));
}
public Result farmer(Long id, String url) {
return ok(farmer.render());
}
}
これで適切な農家のデータが得られますが、User モデルを介して名前を表示しようとすると、null が返されます。より具体的には、これを書くとヌルになりますnullnull
(実際には を取得します):
<div><h4>@(farmer.user.firstName + farmer.user.lastName)</h4></div>
私は何が欠けていますか?