我有一个DQL查询和实体专业化的问题.
我有一个叫做的实体Auction
,它OneToOne
与之有关系Item
.Item
是mappedSuperclass
为Film
和Book
.我需要一个可以支持搜索引擎的查询,允许用户查找具有不同属性的拍卖,AND
销售具有不同属性的项目(这是AND
使其具有挑战性的部分).
问题是即使Auction
有一个指向Item
这样的关联,我需要访问Film
- 和Book
- 特定的字段.用户将指定Item
他们正在寻找的类型,但除了INSTANCE OF
在我的DQL查询中使用之外,我没有看到任何使用此信息的方法.
到目前为止,我已尝试使用如下查询:
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 ...".
Run Code Online (Sandbox Code Playgroud)
这样的查询会导致错误说:
类
Entities\Item
没有命名的字段或关联bookTypes
这是假的Book
,但却是如此Item
.
我也试过了
SELECT a FROM Entities\Book i
INNER JOIN i.auction …
Run Code Online (Sandbox Code Playgroud) 想象一下,您有一个组件需要一个函数来呈现该组件层次结构中的特定子树:
const Timeline = ({ renderDetails, ... }: { renderDetails: (rowData, sectionID, rowID) => React.Node }) => <div>{renderChildren(...)}</div>;
Run Code Online (Sandbox Code Playgroud)
使用上有区别吗:
const MyComponent = React.memo(({ someProp }) => <someComponentHierarchyHere>...</someComponentHierarchyHere>);
const ParentComponent = ({ someProp }) => {
const renderChildren = useCallback(() => <MyComponent someProp={someProp} />, [someProp]);
return <Timeline renderChildren={renderChildren} />;
};
Run Code Online (Sandbox Code Playgroud)
与
const ParentComponent = ({ someProp }) => {
const MyComponent = useMemo(({ someProp }) => <someComponentHierarchyHere>...</someComponentHierarchyHere>);
const renderChildren = useCallback((rowData, sectionID, rowID) => <MyComponent someProp={someProp} />, [someProp]);
return <Timeline renderChildren={renderChildren} …
Run Code Online (Sandbox Code Playgroud) 此方法以事务开头
@Transactional(propagation = Propagation.REQUIRED)
public Account generateDirectCustomerAccountEntity(AccountReq source, Map<String, String> headers, String workflowId) {
Account dbAccount = dCustomerModelToEntityMapper.map(source, headers);
dbAccount = saveAccount(source, dbAccount, headers, workflowId);
return dbAccount;
}
Run Code Online (Sandbox Code Playgroud)
这是一个映射器类,我在其中创建 DB Account 实体并映射 address 和 contacts 。
@Override
@LogExecutionTime(log=true)
public Account map(AccountReq accountReq, Map<String, String> headers) {
logger.info("AccountModelToEntityMapper.mapDirectCustomer*****START");
Account dbAccount = new Account();
AccountCode accountCode = dbService.getAccountCodeForDirectCustomer(accountReq);
String accountId = dbService.genarateAccountId(accountCode);
logger.info("genarated AccountID for Direct Customer is={}", accountId);
dbAccount.setAccountId(accountId);
setAccountContact(dbAccount, accountReq, headers);
setAddress(dbAccount, accountReq);
dbAccount.setAccountType(accountCode.getCodeId());
return dbAccount;
}
Run Code Online (Sandbox Code Playgroud)
当我不在地图内调用下面的方法时,一切正常。但是当我调用它时,我得到了标题中描述的错误。
private void …
Run Code Online (Sandbox Code Playgroud) doctrine ×1
doctrine-orm ×1
dql ×1
inheritance ×1
jpa ×1
php ×1
react-native ×1
reactjs ×1
session ×1
transactions ×1