Como usar uma função personalizada em uma consulta jpa?

Eu sou novo no Spring Jpa e no Hibernate. Estou tentando buscar dados usando uma função personalizada de um banco de dados Oracle. Eu poderia definir uma entidade junto com seu serviço, implementação e repositório relacionados. Além disso, criei um novo dialeto Oracle personalizado usandoregisterFunction como você verá abaixo.

Então, eu tenho duas perguntas:

1) No meu banco de dados Oracle, a função fica sob um esquema diferente. Preciso especificar seu esquema? Se sim, como? Ou o hibernate o encontrará automaticamente?

Farei a minha segunda pergunta no final deste post, depois de fornecer o meu stacktrace completo ...

Aqui está o meu rastreamento completo da pilha:

MyOracle10gDialect

package blog;

import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.function.StandardSQLFunction;


public class MyOracle10gDialect extends Oracle10gDialect {

    public MyOracle10gDialect() {
        super();
        registerFunction("my_function", new StandardSQLFunction("my_function"));
    }

}

application.properties

...
spring.jpa.database-platform=blog.MyOracle10gDialect
...

Entidade:

package blog.models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "item", schema = "WOS_SOURCE")
public class WosItem {

    @Id
    @Column(nullable = false)
    private String UT;

    @Column(nullable = false)
    private String TI;

    public String getUT() {
        return UT;
    }

    public void setUT(String UT) {
        this.UT = UT;
    }

    public String getTI() {
        return TI;
    }

    public void setTI(String TI) {
        this.TI = TI;
    }

    public WosItem(String UT, String TI) {
        this.UT = UT;
        this.TI = TI;
    }

    public WosItem() { }

    @Override
    public String toString() {
        return "WosItem{" +
                "UT='" + UT + '\'' +
                ", TI='" + TI + '\'' +
                '}';
    }
}

Serviço:

package blog.services;

import blog.models.WosItem;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface WosItemService {

    List<WosItem> findAll();
    WosItem findById(String id);
    String find_ut(Long ut_seq);
}

Implementação:

package blog.services;

import blog.models.WosItem;
import blog.repositories.WosItemRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class WosItemServiceJpaImpl implements WosItemService {

    @Autowired
    private WosItemRepository wosItemRepository;

    @Override
    public List<WosItem> findAll() {
        return this.wosItemRepository.findAll();
    }

    @Override
    public WosItem findById(String id) {
        return this.wosItemRepository.findOne(id);
    }

    @Override
    public String find_ut(Long ut_seq) {
        return this.wosItemRepository.find_ut();
    }
}

Repositório:

package blog.repositories;

import blog.models.WosItem;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;


@Repository
public interface WosItemRepository extends JpaRepository<WosItem, String> {
    @Query("SELECT function('my_function', input) FROM WosItem wos");
    String find_ut();
}

Portanto, no meu banco de dados Oracle, posso usar esta função como mostrado abaixo:

select other_schema.my_function(aa.input) from my_schema.TABLE aa;

Por ex. diga aa.input é332708100009 então retorna000332708100009

Quanto à minha segunda pergunta:

2) Como posso realizar esse processo no jpa? Estou ciente de que meu repositório não está correto. Eu recebo um erro como "Anotações não são permitidas aqui". Não consegui encontrar uma maneira de remediar isso.

Desde já, obrigado.

EDITAR POR EXCEÇÃO JOGADA:

Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 \-[METHOD_CALL] MethodNode: 'function (my_function)'
    +-[METHOD_NAME] IdentNode: 'my_function' {originalText=my_function}
    \-[EXPR_LIST] SqlNode: 'exprList'
       \-[NAMED_PARAM] ParameterNode: '?' {name=ut_seq, expectedType=null}

questionAnswers(1)

yourAnswerToTheQuestion