【问题标题】:Cannot SELECT data from oracle table with hibernate无法使用休眠从 oracle 表中选择数据
【发布时间】:2018-11-17 12:41:30
【问题描述】:

我用hibernatemysql 创建了一个简单的spring mvc web 应用程序(一切正常)。然后,我将mysql 更改为oracle。在第一次运行应用程序后,(连接到 oracle 数据库)创建了对应于我的应用程序中定义的实体模型的表。我从SQL DEVELOPERCOUNTRYMYAPPUSER 表添加了一个国家和一个用户。现在,我正在尝试从 MYAPPUSER 表中获取用户,但我得到的是 null 而不是存在的用户。

这是用户实体:

@Entity
@Table(name = "myAppUser")
public class User {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "id_Sequence")
    @SequenceGenerator(name = "id_Sequence", sequenceName = "ID_SEQ")
    @Column(name = "Id", updatable = false, nullable = false)
    private int id;

    @Column(name = "FirstName")
    private String firstName;

    @Column(name = "LastName")
    private String lastName;

    @Column(name = "Username")
    private String username;

    @Column(name = "Password")
    private String password;

    @OneToMany(mappedBy = "user")
    private List<UserSubject> userSubjects;

    @ManyToOne
    @JoinColumn(name = "country_id", nullable = false)
    private Country country;

    @OneToMany(mappedBy = "user")
    private List<Test> testList;

    //and getters and setters

}

这是调试时的代码:

在 sql 开发者中:

这是hibernate生成的sql:

我对为什么选择数据后用户为空以及为什么在生成的 sql 中用问号代替 user1123 感兴趣?

我认为这种效果是oracle特有的,因为我的MySQL数据库没有这样的问题。

P.S 不会抛出异常......

【问题讨论】:

  • 实际上是在执行查询吗? 得到 null没有得到任何结果 是两个不同的东西。不过我不懂Java。
  • 有什么方法可以确定oracle中是否执行了查询?
  • 您可以查询v$open_cursor 以获得连接的会话ID。 Hibernate 不能告诉你它做了什么吗?
  • > 问号在生成的 sql 中代替 user1 和 123?
  • 愚蠢的问题,也许是:您是否在 SQL Developer 中提交了更改?

标签: java oracle hibernate


【解决方案1】:

来自 cmets 的解决方案是在 SQL Developer 中提交。

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 2015-08-29
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 2018-12-04
    • 2016-04-10
    相关资源
    最近更新 更多