2

我有这样的模型:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "resourceType", discriminatorType = DiscriminatorType.INTEGER)
public abstract class Resource {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    Long id;

    String foo;
}


@MappedSuperclass
public abstract class NetworkResource extends Resource { 
    String bar;
}

@Entity
@DiscriminatorValue(value = "1")
public class URL extends NetworkResource {
     String url;
}

我将区分值放在所有更具体的实现中,因为我不想在大多数情况下加入所有扩展资源的表,我将仅加入 networkresource表,例如。

所以,我想知道我该怎么做。

我已经尝试过类似的东西:

SELECT c FROM URL c LEFT JOIN c.resource r where r.resourceType = 1 and r.url = :ip

但是当我添加r.resourceType = 1.

那么,我该怎么做呢?

谢谢。

4

1 回答 1

0

基于对您正在尝试做的事情的一些假设,我认为您只是想要:

select c from URL c where c.url = :ip

Hibernate 将负责添加连接和对鉴别器的限制。这几乎就是 Hibernate 的用途。

于 2012-09-24T19:44:16.187 回答