小编Rya*_*mos的帖子

嵌入文档中的 MongoDB 嵌套查找

我有这些收藏

采购订单

{
  "_id": "5f0104a8d0c3a06fc9c06625",
  "purchaseItems": [
    {
      "product": "5eff29e9e2708a0ca980762e",
      "quantity": 1
    },
    {
      "product": "5eff29e9e2708a0ca980762e",
      "quantity": 2
    }
  ],
  "totalQuantity": 0,
  "documentDate": {
    "$date": "2020-07-04T16:00:00.000Z"
  }
}
Run Code Online (Sandbox Code Playgroud)

产品

{
  "_id": "5eff29e9e2708a0ca980762e",
  "name": "name",
  "code": "code",
  "cost": "1",
  "srp": "1",
  "minimum": "1",
  "startEffectiveDate": {
    "$date": "2020-07-04T16:00:00.000Z"
  }
}
Run Code Online (Sandbox Code Playgroud)

如何将 buyItems 中的产品字段加入到产品集合中,该购买项目是一个嵌入式数组文档。我需要这样的东西。

{
  "_id": "5f0104a8d0c3a06fc9c06625",
  "purchaseItems": [
    {
      "product": {
        "_id": "5eff29e9e2708a0ca980762e",
        "name": "product name"
      },
      "quantity": 1
    },
    {
      "product": {
        "_id": "5eff29e9e2708a0ca980762e",
        "name": "product name 2"
      },
      "quantity": …
Run Code Online (Sandbox Code Playgroud)

lookup mongodb spring-mongo mongodb-query aggregation-framework

4
推荐指数
1
解决办法
2585
查看次数

春季启动@Transactional

spring boot会自动在控制器层添加@Transactional注释吗?我尝试将@Transactional放在服务层,但似乎控制器层覆盖了注释.

我有这个配置

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="find*" read-only="true" isolation="READ_COMMITTED"
            propagation="NOT_SUPPORTED" />
        <tx:method name="load*" read-only="true" isolation="READ_COMMITTED"
            propagation="NOT_SUPPORTED" />
        <tx:method name="get*" read-only="true" isolation="READ_COMMITTED"
            propagation="NOT_SUPPORTED" />
        <tx:method name="*" timeout="30" propagation="REQUIRED" />
    </tx:attributes>
</tx:advice>

<aop:config proxy-target-class="true">
    <aop:advisor advice-ref="txAdvice"
        pointcut="execution(* *..service.*Service*.*(..))" order="1" />
</aop:config>
Run Code Online (Sandbox Code Playgroud)

甚至如果我删除该配置,交易仍然有效.

编辑:

这是我的数据源配置

<bean id="msDataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
    destroy-method="close">
    <property name="driverClassName" value="${jdbc.main.driverClass}" />
    <property name="url" value="${jdbc.main.url}" />
    <property name="username" value="${jdbc.main.username}" />
    <property name="password" value="${jdbc.main.password}" />

</bean>


<bean id="msPUM"
    class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
    <property name="defaultDataSource" ref="msDataSource" />
</bean>

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitManager" ref="msPUM" /> …
Run Code Online (Sandbox Code Playgroud)

spring spring-transactions spring-data spring-boot

3
推荐指数
1
解决办法
1965
查看次数