JPA/Hibernate:必须声明标识符 'XXTE_LOADER.ADD_LINE'(但程序在 oracleclient 中运行良好)

JPA/Hibernate: Identifier 'XXTE_LOADER.ADD_LINE' must be declared (but procedure working fine in oracleclient)

我创建了以下实体:

@Entity
@NamedStoredProcedureQuery(name = "createLine", procedureName = "XXTE_LOADER.ADD_LINE", resultClasses = {Contracts.class}, parameters = {
    @StoredProcedureParameter(name = "P_User_Name", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "P_Contract_Number", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "P_Counter_Group_Name", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "P_Contract_Id", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "P_Override_Inv_Text", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "P_Invoice_Text", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "p_start_date", mode = ParameterMode.IN, type = java.sql.Date.class),
    @StoredProcedureParameter(name = "p_end_date", mode = ParameterMode.IN, type = java.sql.Date.class),
    @StoredProcedureParameter(name = "p_project_number", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "p_task_number", mode = ParameterMode.IN, type = String.class),
    @StoredProcedureParameter(name = "x_error_code", mode = ParameterMode.OUT, type = String.class),
    @StoredProcedureParameter(name = "x_error_text", mode = ParameterMode.OUT, type = String.class)
})
@Data
public class Contracts implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    @Id
    private String contractId;

}

如下所示:

StoredProcedureQuery query = entityManagerTerp.createNamedStoredProcedureQuery("createLine");
        
        query.setParameter("P_User_Name", "ANONYMOUS");
        query.setParameter("P_Contract_Number", tscMessage.getContractNumber());
        query.setParameter("P_Counter_Group_Name", tscMessage.getCounterGroupName());
        query.setParameter("P_Contract_Id", tscMessage.getContractId());
        query.setParameter("P_Override_Inv_Text", tscMessage.getOverrideInvoiceText());
        query.setParameter("P_Invoice_Text", tscMessage.getInvoiceText());
        query.setParameter("p_start_date", new java.sql.Date(tscMessage.getStartDate().toGregorianCalendar().getTimeInMillis()));
        query.setParameter("p_end_date", tscMessage.getEndDate() != null ?new java.sql.Date(tscMessage.getEndDate().toGregorianCalendar().getTimeInMillis()) : null);
        query.setParameter("p_project_number", tscMessage.getProjectNumber());
        query.setParameter("p_task_number", tscMessage.getTaskNumber());
        query.execute();
        String status = (String) query.getOutputParameterValue("x_error_code");
        String errorMsg = (String) query.getOutputParameterValue("x_error_text");

但是当 运行 它会抛出以下内容:

2021-06-29 12:05:14,845 INFO [stdout] (default task-15) Hibernate: {call XXTE_LOADER.ADD_LINE(?,?,?,?,?,?,?,?,?,?,?,?)}
2021-06-29 12:05:14,894 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-15) SQL Error: 6550, SQLState: 65000
2021-06-29 12:05:14,894 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-15) ORA-06550: line 1, column 7:
PLS-00201: identifier 'XXTE_LOADER.ADD_LINE' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

但是当我在oracle客户端直接使用同一个oracle用户执行程序时,它执行成功了。

似乎是代码问题,但我不明白这是什么问题?未正确提及架构或任何其他参数?

我认为这是一个可见性问题,但我不是 Oracle 专家。可能搜索路径不同或类似。