Java 如何查明jpa spring是否已经存在电子邮件,并向前端发送一些错误消息
所以我有一个简单的UsersDaoJava 如何查明jpa spring是否已经存在电子邮件,并向前端发送一些错误消息,java,spring,hibernate,spring-mvc,jpa,Java,Spring,Hibernate,Spring Mvc,Jpa,所以我有一个简单的UsersDao public interface UserDao extends JpaRepository<User, Long> { } 关于这个话题,我还有一些额外的问题: 有些不清楚的事情正在发生。我已经做了一个关于jpa的小教程,但他们使用了: 实体管理器, 实体事务 注意:使用EntityManagerFactory时,如下所示: EntityManagerFactory emf = null, //Then they use E
public interface UserDao extends JpaRepository<User, Long> {
}
关于这个话题,我还有一些额外的问题:
有些不清楚的事情正在发生。我已经做了一个关于jpa的小教程,但他们使用了:
实体管理器,
实体事务
注意:使用EntityManagerFactory时,如下所示:
EntityManagerFactory emf = null,
//Then they use EntityManagerFactory
emf = Persistence.createEntityManagerFactory("SomeValue")
//where can i get "someValue" When using application .properties
//because in the example they use xml but can't find the right properties in application.properties
或者我不需要在springboot中使用这些
很抱歉问了这么多问题。我真的很想进入春天,但现在有些事情还不太清楚;) 您有两种选择:
User findByEmail(字符串电子邮件)代码>在存储库界面中
@Query(“从用户u中选择COUNT(u.id),其中u.email=:email)Long
countUsersWithEmail(字符串电子邮件);
很明显,如何使用这些查询的结果。由于开销较小,我会使用第二选择您可以执行以下操作: 假设
User
具有属性email
,在界面中定义如下方法以生成动态查询:
public interface UserDao extends JpaRepository<User, Long> {
public User findByEmail(String email);
}
您好,我尝试了您所说的,但是@column unique true不起作用,我仍然可以通过电子邮件添加多个用户。出于某种原因,如果我执行类似于User user1=userDao.findByEmail(User.getEmail());if(user1.getEmail().equals(User.getEmail())的操作我得到了NullPointerException任何方法的想法OK我得到了它的工作,但由于某些原因unique=true不起作用,我必须在数据库中捕获它对于NullPointerException,在检查电子邮件相等性之前检查user1是否为null。@Column注释是生成ddl的指令。如果您没有自动生成如果禁用ddl,则它将不起作用。从技术上讲,存在竞争条件。最好尝试通过电子邮件保存用户并捕获唯一的密钥冲突
findUserByEmail
如果该电子邮件已经存在,则将抛出ununiqueresultexception
异常
public interface UserDao extends JpaRepository<User, Long> {
public User findByEmail(String email);
}
public class User {
....
@Column(unique=true)
String email;
}