diff --git a/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java b/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java
index 0f7265e..8695242 100644
--- a/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java
+++ b/src/main/java/com/supwisdom/dlpay/api/dao/AccountDao.java
@@ -14,7 +14,7 @@
 import javax.persistence.LockModeType;
 import javax.persistence.QueryHint;
 
-public interface AccountDao extends JpaRepository<TAccount, String>, TAccountRepository {
+public interface AccountDao extends JpaRepository<TAccount, String> {
 
   @Lock(LockModeType.PESSIMISTIC_WRITE)
   @Query("select a from TAccount a where a.accno = ?1")
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index f733e98..76d767d 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -42,13 +42,16 @@
   @Column(name = "reverse_flag", nullable = false, length = 10)
   private String reverseFlag = "none";
 
-  @OneToOne(targetEntity = TPersondtl.class, mappedBy = "refno", fetch = LAZY)
+  @OneToOne(targetEntity = TPersondtl.class, fetch = LAZY)
+  @JoinColumn(name = "refno", referencedColumnName = "refno")
   private TPersondtl personDtl;
 
-  @OneToOne(targetEntity = TShopdtl.class, mappedBy = "refno", fetch = LAZY)
+  @OneToOne(targetEntity = TShopdtl.class, fetch = LAZY)
+  @JoinColumn(name = "refno", referencedColumnName = "refno")
   private TShopdtl shopDtl;
 
-  @OneToOne(targetEntity = TSubjectdtl.class, mappedBy = "refno", fetch = LAZY)
+  @OneToOne(targetEntity = TSubjectdtl.class, fetch = LAZY)
+  @JoinColumn(name = "refno", referencedColumnName = "refno")
   private TSubjectdtl subjectDtl;
 
   @OneToMany(targetEntity = TDebitCreditDtl.class, mappedBy = "refno", fetch = LAZY)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/ShopaccDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/ShopaccDao.java
index 98effbe..fa2ab12 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/ShopaccDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/ShopaccDao.java
@@ -47,5 +47,5 @@
   void updateShopnameByShopaccno(String shopname, String shopaccno);
 
 
-  TShopacc findByShopacc(String acc);
+  TShopacc findByShopaccno(String acc);
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index 941e6b1..9d334d7 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -62,13 +62,6 @@
         template.setConnectionFactory(connectionFactory)
         return template
     }
-
-    @Bean
-    fun longValueRedisTemplate(connectionFactory: RedisConnectionFactory): RedisTemplate<String, Long> {
-        val template = RedisTemplate<String, Long>()
-        template.keySerializer = StringRedisSerializer()
-        return template
-    }
 }
 
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt b/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt
new file mode 100644
index 0000000..47eb043
--- /dev/null
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt
@@ -0,0 +1,23 @@
+package com.supwisdom.dlpay.api
+
+import org.aspectj.lang.JoinPoint
+import org.aspectj.lang.annotation.Aspect
+import org.aspectj.lang.annotation.Before
+import org.aspectj.lang.annotation.Pointcut
+import org.springframework.stereotype.Component
+
+@Component
+@Aspect
+class RestControllerAspect {
+
+    @Pointcut("execution( * com.supwisdom.dlpay.api..*(..))")
+    private fun beforeRequest() {
+    }
+
+    @Before("beforeRequest()")
+    fun check(point: JoinPoint) {
+        point.args.forEach {
+            println("request : $it")
+        }
+    }
+}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/pay_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/pay_service_impl.kt
index ad6f053..6ca0003 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/pay_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/pay_service_impl.kt
@@ -65,7 +65,7 @@
     }
 
     override fun readShopbyAccno(shopacc: String): TShopacc {
-        return shopaccDao.findByShopacc(shopacc)
+        return shopaccDao.findByShopaccno(shopacc)
                 ?: throw TransactionProcessException(TradeErrorCode.SHOP_NOT_EXISTS, "商户<$shopacc>不存在")
     }
 
