java - 我可以使用 sql INSERT 语句插入 java 实体并稍后使用 JPQL 检索它吗?

标签 java sql jpa jpql

我使用 MySql 命令行插入了一个 User 对象。之后我尝试使用此用户电子邮件登录。在我的代码中,有一个 find 方法可以使用 email 字段查找用户。

我的问题是拥有此电子邮件的用户已通过 SQL 语句插入。但无法使用 namedQuery 获取它,我不知道为什么。

谁能给我解释一下吗?

这是我的用户实体。

@Entity
public class User {

@Id
private Long id;

@Embedded
private UserCompositeKey userCompositeKey;

@Column(length = 100)
private String name;

@Column
private String password;

//getters and setters
}


@Embeddable
public class UserCompositeKey implements Serializable {
private static final long serialVersionUID = -9187448094016939417L;

@Column(length = 100, nullable = false)
private String email;

@Column(nullable = false)
private boolean expired;

//getters and setters
}

这是我的 SQL 插入语句。

INSERT INTO User(id,name, password, email, expired) 

VALUES(1,'testUser','pasw123', 'testuser@mail.com',false);

这是namedQuery:

List<User>  users = entityManager.createNamedQuery("select u from User as u where u.userCompositeKey.email = :email and u.userCompositeKey.expired = false", User.class).setParameter("email", email).getResultList();

最佳答案

createNamedQuery()期望命名查询的名称作为其第一个参数。您将向其传递一个 JPQL 查询。使用createQuery()相反。

请注意,您的代码应该抛出 IllegalArgumentException,并带有有意义的错误消息来指示问题所在。始终阅读并发布您收到的异常的堆栈跟踪。忽略错误消息并不是理解错误发生原因的最佳方法。

关于java - 我可以使用 sql INSERT 语句插入 java 实体并稍后使用 JPQL 检索它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20881667/

相关文章:

java - MongoDB : how to get all elements that contain an array using Java Driver?

spring - JPA - Spring boot -@OneToMany 持久性工作正常,但返回 Json 对象时我得到一个奇怪的对象

java - JPA - 将对象保存在一起

java - 如何在 GAE 上将数据存储游标与 jpa 一起使用

java - 使用 BufferedWriter 和 Loop 保存 2D JTextField 数组中的文本

java - 我可以在项目的资源文件夹中看到图像,但仍然收到无效网址错误

导入的 jar 上的 java.lang.VerifyError

mysql - 返回时间戳差异值

SQL Server 字符串中的日期格式

c# - 15000 个到 sql server 2008 的连接处于 “sleeping” 状态