【发布时间】:2016-12-11 12:37:28
【问题描述】:
我有 2 个模型使用“单表继承”策略:
@Entity
@Inheritance
@DiscriminatorColumn(name="user_type")
@Table(name="users")
public class User extends Model {
...
}
@Entity
@DiscriminatorValue("manager")
public class Manager extends User {
....
}
我还有Event 模型,它与Manager 具有多对一关联。
@Entity
@Table(name="events")
public class Event extends Model {
@ManyToOne
@JoinColumn(name = "user_id")
public Manager user;
}
问题是对events 的每个查询都会自动与users 表进行连接以获取鉴别器值(user_type 列的值)。
例如:
Event.find.where().idEq(100).findUnique();
... 生成以下 SQL:
SELECT t0.id c0, t0.name c1, t1.user_type c2, t0.user_id c3 FROM events t0 join users t1 on t1.id = t0.user_id and t1.user_type = 'manager' where t0.id = 100
为什么要加入users 表?
如果查询中已经存在user_type 值,为什么还要得到它? Ebean 正在通过user_type 查找user_type。是bug吗?
如何解决这个问题?
它经常断裂并引起很多痛苦。
编辑:主要问题是“如何解决这个问题?”
【问题讨论】:
标签: playframework ebean playframework-2.5