【发布时间】:2018-11-17 12:41:30
【问题描述】:
我用hibernate 和mysql 创建了一个简单的spring mvc web 应用程序(一切正常)。然后,我将mysql 更改为oracle。在第一次运行应用程序后,(连接到 oracle 数据库)创建了对应于我的应用程序中定义的实体模型的表。我从SQL DEVELOPER 向COUNTRY 和MYAPPUSER 表添加了一个国家和一个用户。现在,我正在尝试从 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 中用问号代替 user1 和 123 感兴趣?
我认为这种效果是oracle特有的,因为我的MySQL数据库没有这样的问题。
P.S 不会抛出异常......
【问题讨论】:
-
实际上是在执行查询吗? 得到 null 和 没有得到任何结果 是两个不同的东西。不过我不懂Java。
-
有什么方法可以确定oracle中是否执行了查询?
-
您可以查询
v$open_cursor以获得连接的会话ID。 Hibernate 不能告诉你它做了什么吗? -
> 问号在生成的 sql 中代替 user1 和 123?
-
愚蠢的问题,也许是:您是否在 SQL Developer 中提交了更改?