我正在尝试实现一个自定义挂钩来为应用程序提供访客购物车。我的钩子环绕着useMutationApollo的钩子,它将购物车 ID 保存在 cookie 中,同时还提供了一个“重置”购物车的功能(基本上,在下订单时删除 cookie)。
代码时间!(为简洁起见省略了一些代码):
export const useGuestCart = () => {
let cartId;
const [createCart, { data, error, loading }] = useMutation(MUTATION_CREATE_CART);
console.log(`Hook!`);
if (!cartId || cartId.length === 0) {
createCart();
}
if (loading) {
console.log(`Still loading`);
}
if (data) {
console.log(`Got cart id ${data.createEmptyCart}`);
cartId = data.createEmptyCart;
}
const resetGuestCart = useCallback(() => {
// function body here
});
return [cartId, resetGuestCart];
};
Run Code Online (Sandbox Code Playgroud)
在我的组件中,我只是使用let [cartId, resetCart] = useGuestCart();.
当我运行我的单元测试(使用 Apollo 提供模拟突变)时,我看到钩子被调用了几次,输出看起来像这样:
console.log …Run Code Online (Sandbox Code Playgroud) 我正在尝试新的 Apollo React Hooks,并建立了一个小型商业示例。
function App() {
const [cartId, setCartId] = useState('V1bvif5UxQThb84iukrxHx9dYQg9nr8j');
const [removeItem, {loading: mutationLoading}] = useMutation(REMOVE_ITEM, {
refetchQueries: [{query: CART_DETAILS, variables: {cartId}}]
});
const [addToCart] = useMutation(ADD_TO_CART, {
refetchQueries: [{query: CART_DETAILS, variables: {cartId}}]
});
const {data, loading, error} = useQuery(CART_DETAILS, {
variables: {cartId}
});
if (data && data.items) {
console.log(`We have data`, data);
}
const handleRemove = itemId => {
console.log(`Removing item with id ${itemId}`);
removeItem({
variables: {cartId, itemId}
});
};
if (error) {
console.log(`Some error happened`, error); …Run Code Online (Sandbox Code Playgroud) 我正在处理的项目具有以下设置:JPA 2.0(Hibernate 4 实现)和 SQL Server 2008 R2。
我需要从 SQL 视图中选择一些数据。为了做到这一点,我使用了本机查询,但我遇到了 NVARCHAR 字段的一些问题。基本上,当使用这段代码时:
String sql = "SELECT v.text_field as address FROM SOME_CUSTOM_VIEW v
Query q = entityManager.createNativeQuery(sql,"ItemDetailsMapping");
List<Object[]> result = q.getResultList();
Run Code Online (Sandbox Code Playgroud)
ItemDetailsMapping 声明如下:
@SqlResultSetMapping(name = "ItemDetailsMapping", columns = { @ColumnResult(name = "address") })
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
org.springframework.orm.hibernate3.HibernateSystemException: No Dialect mapping for JDBC type: -9; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -9
Run Code Online (Sandbox Code Playgroud)
类型 -9 实际上是 NVARCHAR 类型,我们在整个应用程序中广泛使用它,当我们使用非本机查询时它可以完美地工作。为什么它不能与本机查询一起使用?我什至使用了自定义方言并注册了类型,但它仍然无法正常工作。
非常感谢你的帮助