oracle - Hibernate 不返回手动插入的行
问题描述
我的 jpa 存储库存在问题,它没有返回我通过良好的旧 SQL 手动插入数据库 (Oracle) 的行
Insert into SYSTEM.USER (ID,CREDENTIALS,ISADMIN) values (USERSEQ.nextval,'foo',1);
我的 Jpa 存储库
@RepositoryRestResource
public interface UserRepository extends JpaRepository<User, Long> {}
用户实体
@Data
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idgen")
@SequenceGenerator(initialValue = 1, allocationSize = 1, name = "idgen", sequenceName = "userseq")
private Long id;
@NotNull
private String credentials;
private boolean isAdmin;
}
超级奇怪的是我通过 REST 接口插入的条目有效!
因此,如果我创建:
- 用户 A 通过 REST API
- 用户 B 通过 SQL 语句
- 用户 C 通过 REST API
结果GET /api/users
是A, C
拔掉我所有的头发后。我想我已经把它缩小到了 Oracle 的闪回特性。因为只有 A 和 C 在闪回中有条目。因此,Hibernate 必须在幕后施展魔法。
所以我的问题是。如何使用 SQL 插入一行,以便它也获得闪回条目。
如果闪回的事情不是问题。那么如何让 Hibernate 返回所有行呢?
解决方案
当您在Oracle Sql Developer中执行 SQL 查询时,它正在运行自己的会话。JPA 正在自己的会话中工作。即 JPA 无法访问 SQL 查询的记录。
解决方案
Insert into SYSTEM.USER (ID,CREDENTIALS,ISADMIN) values (USERSEQ.nextval,'foo',1);
之后只需触发Oracle Sql DeveloperCOMMIT
中的命令。
它对我有用。
推荐阅读
- matlab - 如何计算每个网格单元的面积?
- ios - 是否可以在同一个应用程序中同时运行 AFNetworking 和 Alamofire?
- javascript - 如何将javascript数据传递到另一个页面?
- prolog - 在 Prolog 中寻找主要因素
- json - 如何使用python保存json所有更新数据
- ftp - 使用 MSINET 将文件上传到不存在的 FTP 路径时没有错误
- javascript - 允许用户在没有提交按钮的情况下上传 x 文件夹 chrome 扩展上的图像
- php - PHP 数组库存编辑
- ios - 斯威夫特:如何总是从洗牌数组中获得不同的价值
- javascript - 如何在 Laravel 中启动 JS 功能时关闭重新加载