私はこのような私のモデルを持っています:
@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
。
だから、どうすればそれを行うことができますか?
ありがとう。