jpa2.2.10 Query entityManager 不指定表名查询,使用占位符赋值 具体实例
时间: 2024-05-09 10:17:10 浏览: 75
可以参考以下代码:
```java
@Entity
public class User {
@Id
private Long id;
@Column(name = "name")
private String name;
// getters and setters
}
@Repository
public class UserRepository {
private final EntityManager entityManager;
public UserRepository(EntityManager entityManager) {
this.entityManager = entityManager;
}
public List<User> findByName(String name) {
String query = "SELECT u FROM User u WHERE u.name = :name";
return entityManager.createQuery(query, User.class)
.setParameter("name", name)
.getResultList();
}
}
```
在这个例子中,我们使用了 JPA 的 `@Entity` 注解来表示一个实体类(这里是 `User` 类),其中包含了一个主键 `id` 和一个名称 `name`。在 `UserRepository` 类中,我们注入了一个 `EntityManager` 对象,用于执行数据库操作。在 `findByName` 方法中,我们使用了一个命名参数 `:name` 来进行占位符赋值,这样可以避免 SQL 注入攻击。最后,我们调用 `getResultList` 方法来执行查询并返回结果列表。
阅读全文