- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 Hibernate4 和 Spring 3。
Hibernate 不会更新,而是始终尝试插入。
我的实体类:
@Entity
@Table(name="APP_SERVER")
public class ServerEntity {
@Id
@GeneratedValue(generator="seq_item", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name="seq_item",sequenceName="SEQ_APP_SERVER")
@Column(name="APP_SERVER_KEY")
private int app_server_key;
@Column(name="SYS_ID" , unique=true)
private String sys_id;
@Column(name="SERVER_NAME")
private String server_name;
}
我的服务类别:
@Service("ServerService")
public class ServerServiceImpl implements ServerService{
// other code
@Override
@Transactional
public void addServer(ServerEntity server) {
serverDao.addServer(server);
}
}
道类:
@Repository("ServerDao")
public class ServerDaoImpl implements ServerDao {
@Override
public void addServer(ServerEntity server) {
try{
this.sessionFactory.getCurrentSession().saveOrUpdate(server);
}catch (Exception e) {
e.printStackTrace();
}
}
}
其他类:
ServerEntity serverEntity = new ServerEntity();
serverEntity.setSys_id((result.getSysId()));
serverEntity.setServer_name(result.getName());
ServerService serverService = (ServerService)
applicationContext.getBean("ServerService");
serverService.addServer(serverEntity);
表:
CREATE TABLE "APP_SERVER"
( "APP_SERVER_KEY" NUMBER NOT NULL ENABLE,
"CMDB_SYS_ID" VARCHAR2(64) NOT NULL UNIQUE ENABLE ,
"SERVER_NAME" VARCHAR2(255) NOT NULL ENABLE,
PRIMARY KEY ("APP_SERVER_KEY") ENABLE
) ;
异常即将到来:
05:36:40,292 INFO [STDOUT] Hibernate: insert into USER.APP_SERVER (SYS_ID,SERVER_NAME) values (?, ?)
05:36:40,558 INFO [STDOUT] WARN : org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1, SQLState: 23000
05:36:40,558 INFO [STDOUT] ERROR: org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ORA-00001: unique constraint (USER.APP_SERVER_UK1) violated
05:36:40,684 INFO [STDOUT] Exception occured... org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [OIMUSER.SPP_SERVER_UK1]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
这就是为什么 hibernate 是插入而不是更新。 sys_id
已经存在于数据库中,在这里我希望 hibernate 更新它,因为 sys-id 已经存在。
需要更改哪些代码。请提出建议。
最佳答案
你可以尝试这样的事情
Student ss = new Student();
Student get = (Student) s.load(Student.class, new Long(id));
get.setDegree(newDegree);
tx.commit();
如果您的对象处于持久状态,则加载对象的代理并对其进行操作。一旦操作完成,就提交事务。您的对象会由 hibernate 自动更新。
关于java - hibernate 4 : saveOrUpdate exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24734116/
1. 引子 在项目开发过程中,有一些数据在写入时候,若已经存在,则覆盖即可。这样可以防止多次重复写入唯一键冲突报错。下面先给出两个MyBatis配置文件中使用saveOrUpdate的示例 ins
我有一个名为客户的 hibernate 实体,其中包含有关客户的信息。在我的方法中,我将客户详细信息作为参数获取,我需要将其插入数据库。因此,要删除重复条目,我会检查该客户是否已存在于数据库中。但问题
我尝试在 hibernate 中使用 saveorupdate 方法,结果是 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViola
我正在尝试做这样的方法,错误出现了并发问题..似乎我的更新方法没有增加我实体的@Version属性。 我的代码是这样的: @Transactional public B sav
saveOrUpdate() does the following: •if the object is already persistent in this session, do nothing
我尝试使用以下代码插入或更新数据库记录: Category category = new Category(); category.setName('catName'); category.setId
我正在通过以下链接使用 struts2 和 hibernate 集成 http://www.tutorials4u.net/struts2-tutorial/struts2_crud_example.
我正在尝试使用 Hibernate 插入或更新大数据。我有一个包含 350k 个对象的列表,当我使用 Hibernate saveOrUpdate() 时,需要几个小时才能插入所有数据。 我使用下面的
当使用 saveOrUpdate 创建一个新的 ebject 时,hibernate 将对象存储在数据库中并正确返回它。但是在同一方法调用中会创建一个带有一些空列的附加对象。 数据库中的对象如下所示:
@SuppressWarnings("unchecked") //@Override public SerialNumber getCounter(String id) { Session c
我的表有 2 个字段 id - 唯一、NotNull 和 Seq 名称 - Varchar 在空表上,我将记录发送为id = 1(手动填写id值) 名称 = '样本' 我使用 saveOrUpdate
我有 2 个双向映射的表,如下 @Entity @Table(name="testplan") public class TestPlan { @Id @Column(name="te
虽然我已经能够找到有关 Hibernate 事务如何工作的信息,因此数据库不会损坏,但更难理解 Hibernate 如何处理在线程之间共享的对象,并且每个线程都尝试将其保存到数据库。 这是我的理论问题
我有一个 Journal 类,它有一个 JournalLine 对象的 IList。 我创建了一个 Journal 并意外地通过相同的行生成方法运行了两次。此方法的开头调用 _journalLines
我正在尝试使用 Hibernate 中的 session.saveOrUpdate() 方法更新表格行。 但是,它无法更新该行并尝试通过生成插入语句来保存它。由于我的数据库中有一些不可为 null 的
我有一个名为 IssueParticipant 的 Hibernate 实体。它基本上描述了用户和问题(类似于 JIRA 或 Bugzilla 问题)之间的关系。它代表数据库中的一种多对多链接表,将用
我创建了一个名为“gauge_category”的表,它只有一个字段“gauge_category_id”是主键,数据类型是可变字符。我尝试了 CRUD 操作。创建、读取、删除操作完美运行。当我更新时
我正在使用 mysql 和 hibernate 在表中插入和更新行。我使用 saveOrUpdate 调用。现在,当我尝试更新表中的一行时,出现异常。异常指出我的列 requestTime 不能为空。
我正在使用 spring 来维护我应用程序中的事务。我想在数据库中保存新的并更新现有的用户详细信息。但是我无法更新对数据库的更改。查看我下面的代码并告诉我我的代码做错了什么? Session ses
我正在尝试使用父对象上的 saveOrUpdate 函数从 Hibernate Java 对象的集合中删除一个项目。更新和插入工作正常,但对象未正确删除。 saveOrUpdate() 是否能够识别和
我是一名优秀的程序员,十分优秀!