当前位置: 首页 > 知识库问答 >
问题:

混合参数策略-仅使用命名、位置或JPA顺序策略之一

黄仲渊
2023-03-14

我正在从Oracle数据库调用函数,并面临此异常:

组织。冬眠发动机查询ParameterRecognitionException:混合参数策略-仅使用命名、位置或JPA顺序策略之一

这是我的用户。java实体。

@Entity
@Table(name = "users", schema = "myschema")
@javax.persistence.NamedNativeQuery(name = "getPass", query = "{? call = his.get_abc(:mrno)}", resultClass = User.class, hints = {
    @javax.persistence.QueryHint(name = "org.hibernate.callable", value = "true") })
public class User {

@Id
@Column(name = "USERID", nullable = false)
private String userid;

@Column(name = "MRNO")
private String mrno;

private String username;
private String password;
private String fullName;
    // Getters and Setters are written.
}

这就是我从服务类调用这个函数的方式。

public boolean validateUser(String mrno, String password) {

    String completeMrno = utils.getMedicalRecordNumber(mrno);

    EntityManagerFactory factory = Persistence.createEntityManagerFactory("his-dev");
    EntityManager entityManager = factory.createEntityManager();

    Query query = entityManager.createNamedQuery("getPass"); // <- this line is raising exception.
    query.setParameter("mrno",completeMrno); 
    List<?> results = query.getResultList();
 }

那么,为了调用返回字符串的Oracle函数,需要做哪些更改。

谢谢。如果需要更多信息,请告诉我。

共有1个答案

燕琨
2023-03-14

下面是如何使用JPA调用函数的示例:

Object result = entityManager.createNativeQuery("SELECT his.get_abc(:mrno) FROM DUAL")
                                      .setParameter("mrno", completeMrno)
                                      .getSingleResult();
String value = new String(result);
 类似资料:
  • 我有一个spring boot项目,它使用以下设置运行: 我发现hibernate在映射atributes时没有将camelCase转换为SNAKE_CASE,而是将upper_case应用于它(因为Oracle不区分大小写,所以这并不重要): 这是我的实体: 编辑 我发现我的项目使用的是spring Boot1.4.5.发行版,但由于其他无可争议的原因,Hibernate的版本是4.2.19.f

  • 我想用Crudepository实现spring boot 2应用程序。我搞不清楚我的应用程序中的命名策略是怎么回事。当我调用存储库中的方法(例如findAll())时,它会转换数据库中表的名称,导致查询崩溃。当然,我尝试过类似问题的解决方案:改进的命名策略不再适用于Hibernate 5 Hibernate命名策略更改表名 Spring boot完全忽略应用程序的命名策略属性。属性文件(其他属性

  • 问题内容: 我正在使用postgresql数据库和spring + hibernate框架编写应用程序。 我将spring框架从4.1.5.RELEASE升级到4.2.0.RELEASE版本,并将hibernate框架从4.3.7.Final升级到了5.0.0.Final版本。 升级后,我在NamingStrategy中遇到问题。在postgresql数据库中,表列名称以小写字母用下划线分隔,在应

  • underscored 参数 Sequelize 为模型提供了 underscored 参数. 设为 true 时,此参数会将所有属性的 field 参数设置为其名称的 snake_case 版本. 这也适用于由关联和其他自动生成的字段自动生成的外键. 例: const User = sequelize.define('task', { username: Sequelize.STRING },

  • Kotlin+Spring Boot Cassandra应用程序忽略了注释。下面的注释 正在映射到而不是。由于列在表中不存在,因此会导致运行时错误。

  • 我正在使用Hibernate/JPA执行本机PostGIS查询。这些查询的问题在于它们需要不是经典X='value'形式的参数。 我的问题是:- 错误:- 有人知道如何解决这种情况吗?