我对DQL查询和实体专门化有疑问。
我有一个称为Auction
的实体,它与OneToOne
之间具有Item
关系。 Item
是mappedSuperclass
和Film
的Book
。我需要一个可以支持搜索引擎的查询,使用户可以查找具有不同属性AND
的拍卖,出售具有不同属性的商品(正是AND
部分使其具有挑战性)。
问题是,即使Auction
本身具有指向Item
的关联,我仍需要访问Film
-和Book
特定字段。用户将指定他们要查找的Item
类型,但是除了在我的DQL查询中使用INSTANCE OF
外,我看不到任何使用此信息的方法。
到目前为止,我已经尝试使用类似的查询:
SELECT a FROM Entities\Auction a
INNER JOIN a.item i
INNER JOIN i.bookTypes b
WHERE i INSTANCE OF Entities\Book
AND b.type = 'Fantasy'
AND ...".
这样的查询会导致一个错误,说:
Entities\Item
类没有名为bookTypes
的字段或关联。>对于
Book
为假,对于Item
为真。
我也尝试过
SELECT a FROM Entities\Book i INNER JOIN i.auction a ...
但是我认为教义要求我在
SELECT
和FROM
语句中引用同一实体。
如果这很重要,我正在使用类表继承。不过,我认为切换到单表继承不会成功。
有什么想法吗?
我对DQL查询和实体专门化有疑问。我有一个名为Auction的实体,它与Item具有OneToOne关系。 Item是Film and Book的mapedSuperclass。我需要一个查询...
如马特所说,这是教义项目无法解决的老问题(DDC-16。
已更新:
您可以通过使用id将基本实体与继承类左连接,轻松解决此问题:
教义团队表示,他们不会为此增加支持:
我遇到了同样的问题,没有为每个子类使用单独的查询并稍后在应用程序级别将它们合并,就找不到解决方案。