개체 한정자의 데이터베이스 이름 구성 요소는 현재 데이터베이스의 이름이어야 합니다

By | 2021년 7월 23일
Table of Contents

개체 한정자의 데이터베이스 이름 구성 요소는 현재 데이터베이스의 이름이어야 합니다

원인

MS-SQL 의 제한조치로 디비 커넥션을 한 데이타베이스만 접속가능하게 제한조치가 걸려있습니다.

해결책

url: jdbc:sqlserver://XXX.XXX.XXX.XXX;databaseName=디비명

접근하려는 데이타베이스의 명을 동일하게 맞춰주어야 합니다.

여러개의 데이타베이스에 접근하려면,
물리적으로는 하나의 데이타베이스 이더라도,
여러개의 데이타소스를 만들어야 합니다.

해결책 02

JDBC URL 상의 데이타베이스를 master 로 설정한다.

엔터티에 catalog 를 지정해 준다.

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "tbl_orderMaster", catalog = "database_order.dbo")
public class OrderMaster implements Persistable<Integer> {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "idx")
    private int idx;
    // ......
}

nativeQuery 를 이용해 프로시저도 호출할 수 있다.

@Repository
public interface OrderMasterRepository extends JpaRepository<OrderMaster, Integer> {

    Optional<OrderMaster> findByOrderserial(String orderserial);

    // 대괄호 앞뒤에 공백문자가 있어야 한다.
    @Query(value = "{ CALL database_order.dbo.usp_Ten_Order_GetOrderMasterListJpa(:pageNo, :pageSize, :userid, :orderserial) }", nativeQuery = true)
    List<OrderMaster> GetOrderMasterList(
            @Param("pageNo") Integer pageNo,
            @Param("pageSize") Integer pageSize,
            @Param("userid") String userid,
            @Param("orderserial") String orderserial);
}

답글 남기기