【发布时间】:2014-07-31 10:19:30
【问题描述】:
我扩展了新实体 Auditor 的域模型,它从实体 User 扩展而来。用户是已经存在的旧实体(数据库表)。现在,如果对超类用户(仅)执行一些查询,Hibernate 也会在审计表上附加左外连接子句。有人知道如何解决吗?
用户类
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "users")
@DiscriminatorColumn(length = 10, name = "discriminator",
discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("user")
@SequenceGenerator(name = "users_id_seq",
sequenceName = "users_id_seq",
initialValue = 1, allocationSize =1)
public class User extends AbstractEntity implements UserDetails{
private static final long serialVersionUID = 198524L;
private Long id;
// ...
}
审核员类
@Entity
@Table(name = "auditor")
@DiscriminatorValue("auditor")
public class Auditor extends User {
private Country countery;
// ...
}
用户列表的 HQL 查询示例
Query query = sessionFactory.getCurrentSession()
.createQuery("select type(u) from User u");
return Collections.checkedList(query.list(), User.class);
Hibernate 生成器,例如:
select
case
when user0_1_.id is not null then 1
when user0_.id is not null then 0
end as col_0_0_
from
users user0_
left outer join
auditor user0_1_
on user0_.id=user0_1_.id
group by
user0_.id
order by
【问题讨论】:
-
这似乎与my question有关。你是怎么解决这个问题的?