相关疑难解决方法(0)

如何处理和解析JPA持久性异常以向用户提供有意义的消息

我是JPA的新手,并希望在处理JPA的持久性异常时找到最佳实践,例如,可以由用户解决的唯一约束违规.有很多关于如何编写JPA应用程序的例子,但几乎没有关于如何处理由它们引发的异常的例子.:/

例如,注册用户,该人输入已被系统主动使用的电子邮件地址并获得约束违规:

try {
     em.persist(credentials);
} catch (javax.persistence.PersistenceException ex) {
Run Code Online (Sandbox Code Playgroud)

添加重复的电子邮件时会产生此错误:

WARNING: SQL Error: 0, SQLState: 23505
SEVERE: ERROR: duplicate key value violates unique constraint "EMAIL_UQ_IDX"
  Detail: Key (email)=(testuser@xyz.com) already exists.
Run Code Online (Sandbox Code Playgroud)

如何才能将有意义的答案反馈给用户?例如:Oops看起来好像有人正在使用该电子邮件地址,您确定以前没有注册吗?是否有内置工具来解析这个或者我是否需要在(可能是一系列)if语句中对异常消息运行正则表达式?

如果它被捕获在业务层上呢...那么将它踢到表示层的最佳实践是什么...就像我之前说过的那样,这样就可以为用户提供"好"的消息.


增加了对净度:正是这样的人都知道,我有,有,而且我仍然在寻找各种不同类型的持久性的异常,这里是一些我一直在做我没有用"try语句"包括研究上面包含的示例:

try {
     em.persist(credentials);
     } catch (javax.persistence.PersistenceException ex) {
         System.out.println("EXCEPTION CLASS NAME: " + ex.getClass().getName().toString());
         System.out.println("THROWABLE CLASS NAME: " + ex.getCause().getClass().getName().toString());
                Throwable th = ex.getCause();
         System.out.println("THROWABLE INFO: " + th.getCause().toString());
         Logger.getLogger(CredentialsControllerImpl.class
              .getName()).log(Level.INFO, "Credentials Controller "
                  + "persistence exception "
                      + "EXCEPTION STRING: {0}", ex.toString());
         Logger.getLogger(CredentialsControllerImpl.class …
Run Code Online (Sandbox Code Playgroud)

java parsing jpa exception-handling exception

25
推荐指数
1
解决办法
3万
查看次数

如何向SQL Server中不允许空值的表添加列?

我有一个表,我想添加一个位列,我希望所有现有数据默认为false.

如何更改我的表,以便在我为现有行插入false之前允许我指定NOT NULL?

我应该将其创建为可空的,执行插入操作而不是将其置为不可空的吗?

sql sql-server

23
推荐指数
2
解决办法
4万
查看次数

MySQL名称的主键约束

数据定义语句:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id)
)
Run Code Online (Sandbox Code Playgroud)

的价值和目的是什么

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id)

与此相反

PRIMARY KEY (P_Id)

MySQL的文档真的不说太多关于这个,除了这个

mysql sql constraints primary-key

5
推荐指数
1
解决办法
1586
查看次数

防止MySQL双重插入

我的桌子或多或少看起来像

Name | Lastname | ID | Date 
Run Code Online (Sandbox Code Playgroud)

有没有办法阻止数据库运行插入功能,如果一个人这样Name,Lastname并且ID已经存在而没有运行其他查询来搜索他?

php mysql sql schema

4
推荐指数
1
解决办法
1132
查看次数

如何更改 SQL Server 中列的默认值

据说我有一个名为 Person 的表,定义如下:

CREATE TABLE Persons
(
    P_Id uniqueidentifier Default newsequentialid() NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) DEFAULT 'Sandnes'
)
Run Code Online (Sandbox Code Playgroud)

如何使用 sql 查询删除该列的默认值?此外,如果一开始不存在,我该如何添加它。我知道可以通过更改表并在 P_Id 列上添加约束来添加它,但我不确定这是否是唯一的方法。我遇到了这篇文章,但是那里建议的内容似乎并没有真正起作用。

有任何想法吗?

sql database sql-server-2008

2
推荐指数
2
解决办法
1万
查看次数