我正在对我的数据库执行INSERT查询,但是出现标题中描述的错误(从西班牙语翻译)。
我认为问题在于PostgresSQL“了解”正在执行查询的另一个用户,并且没有写权限,但是在application.properties中,我使用的连接参数是数据库管理器系统。
如果我直接在PostgreSQL中执行相同的查询,它将起作用。为什么我从DAO进行查询时为什么不起作用?
DAO:
@Override
public Object register(String name, String surname, String email, String password) {
StringBuilder queryStB = new StringBuilder();
queryStB.append("INSERT INTO Users (user_name,surname,email,user_password,app_admin)"
+ " VALUES (:user_name,:surname,:email,:user_password,:app_admin ) ");
String queryString = queryStB.toString();
Query query = entityManager.createNativeQuery(queryString);
query.setParameter("user_name",name);
query.setParameter("surname",surname);
query.setParameter("email",email);
query.setParameter("user_password",password);
query.setParameter("app_admin",false);
return query.getResultList();
}
APPLICATION.PROPERTIES
server.port=8081
## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username= postgres
spring.datasource.password=******
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = create-drop
答案 0 :(得分:0)
休眠EntityManager的createNamedQuery方法仅支持选择查询。这就是错误消息指示的内容。
我还检查了并没有看到有人使用该方法插入或更新查询的示例。