我在使用Ebean / Play时没有正确地在桌子之间舔舔。
我有3个表,用户,群组和 UsersGroups (桥接)。
我在每个表中都有一条记录,当我拿起用户记录时,该对象可以访问所有关联的 UsersGroups 记录。但是,当我尝试对组执行相同操作时,链接的 UsersGroups 对象为空。我对ORM没什么经验,也不知道如何调试这个问题。
用户类:
@Entity
public class Users extends Model {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long intUserId;
@javax.persistence.Column(length = 50, unique = true)
@Constraints.Required
public String strUsername;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
public List<Sessions> session;
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
public List<UsersGroups> memberOfGroups;
@javax.persistence.Column(length = 50)
public String strFirstName;
@javax.persistence.Column(length = 50)
public String strLastName;
@javax.persistence.Column(length = 50, unique = true)
@Constraints.Required
public String strEmail;
@Formats.DateTime(pattern = "dd/MM/yyyy")
public Date tsRegistrationDate = new Date();
public String strPasswordHash;
public static Finder<Long, Users> find = new Finder(Long.class, Users.class);
}
小组课程:
@Entity
public class Groups extends Model {
@Id
@Constraints.Required
@Column(unique = true)
@GeneratedValue(strategy = GenerationType.AUTO)
public Long intGroupId;
@Transient
public Long intToken() {
return this.intGroupId + 100000;
}
@OneToMany(mappedBy = "group", cascade = CascadeType.ALL)
public List<UsersGroups> usersGroups;
@Constraints.Required
@Formats.DateTime(pattern = "dd/MM/yyyy")
public Date tsCreated = new Date();
@Constraints.Required
@javax.persistence.Column(length = 2)
public Long intType;
@Constraints.Required
@javax.persistence.Column(length = 2)
public Long intStatus = (long) 1;
@Constraints.Required
@javax.persistence.Column(length = 50)
public String strName;
@Constraints.Required
public boolean blPublic;
public static Finder<Long, Groups> find = new Finder(Long.class, Groups.class);
}
桥类:
@Entity
public class UsersGroups extends Model {
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "int_user_id")
public Users member;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "int_group_id")
public Groups group;
public int type;
public static Finder<Long, UsersGroups> find = new Finder(Long.class, UsersGroups.class);
}
现在我的问题:
System.out.println("GROUP: "+ group.intGroupId);
System.out.println("UGROUP: "+ Ebean.group(UsersGroups.class ).where().eq("int_group_id", group.intGroupId).findRowCount());
System.out.println(group.usersGroups.size());
打印:
GROUP: 12
UGROUP: 1
0
从此我收集到1.我的组对象被找到,2。找到桥表中的相关记录,3。Ebean无法获取链接。
非常感谢帮助。