【发布时间】:2011-07-11 08:50:08
【问题描述】:
我正在使用 Play!Framework 开发一个项目,并且遇到了 JPA 的一些问题。似乎它没有保存我的列表,或者无法从数据库中检索它。
这是我的用户类:
@Entity
public class User extends Model {
public String login;
public String password;
public String name;
public String email;
@ElementCollection
public List<Long> eventStreamIds;
@Transient
UserEventBuffer eventBuffer;
public User(String login, String password, String name, String email, ArrayList<Long> eventStreamIds) {
this.login = login;
this.password = password;
this.name = name;
this.email = email;
this.eventStreamIds = eventStreamIds;
UserEventBuffer eventBuffer = new UserEventBuffer();
}
}
我还有一个类,ModelManager,它的构造函数如下:
public ModelManager() {
User u = new User("user1", "pwd", "Alex", "test@test.com");
EventStreamMC eb = new EventStreamMC("http://www.wservice.com/stream1");
streams.add(eb);
u.eventStreamIds.add(eb.id);
Logger.info("before : " + u.eventStreamIds.size());
u.save();
User u2 = User.find("byLoginAndPassword", "user1", "pwd").first();
Logger.info("after : " + u2.eventStreamIds.size());
}
(我的 EventStreamMC 也扩展了 Model 并且有一个 @Entity 标签,所以它的 Long id 是自动生成的) 当我运行这段代码时,结果如下:
before = 1
after = 0
所以调用 find() 方法后 List 为空。
我怎样才能让它工作?
【问题讨论】:
-
如果您只是查看数据库会容易得多,这样您就知道问题是保存还是查找。例如,如果您有 2 个使用 pwd 的 user1,它将无法正常工作。
-
如何在开发模式下查看数据库?
-
简单使用真实数据库。您甚至可以尝试模块console。确保您的事务已提交。
标签: java list jpa playframework