我有一个使用Ebean的Play 2.1.3 Java应用程序.我收到下面的OptimisticLockException.
[OptimisticLockException: Data has changed. updated [0] rows sql[update person
set name=? where id=? and email=? and name=? and password is null and created=?
and deleted is null] bind[null]]
Run Code Online (Sandbox Code Playgroud)
我知道它试图告诉我,当我阅读它和我试图写它时,记录已经发生了变化.但唯一的变化是在这种方法中发生的.
public void updateFromForm(Map<String, String[]> form) throws Exception {
this.name = form.get("name")[0];
String password = form.get("password")[0];
if (password != null && password.length() != 0) {
String hash = Password.getSaltedHash(password);
this.password = hash;
}
this.update();
}
Run Code Online (Sandbox Code Playgroud)
我做错了吗?我在zentasks中看到了类似的逻辑.另外,我应该能够看到绑定变量的值吗?
更新:我从控制器内部调用updateFromForm():
@RequiresAuthentication(clientName = "FormClient")
public static Result updateProfile() throws Exception {
final …
Run Code Online (Sandbox Code Playgroud) 可以说我有这些表:
ORDER: id ITEM: id ORDER_ITEM: order_id, item_id
表:ORDER_ITEM
是ORDER
和之间的桥表ITEM
.
我如何描述这三人组Ebean
?
我宁愿不使用原始SQL,以便我仍然可以创建和更新这些实体.
更新于 11月9日星期六02:32:40 UTC 2013
好吧,让我们更难以解决这个问题,更能代表我的实际情况.列名称不符合约定:
ORDER: order_number ITEM: item_number ORDER_ITEM: my_order, my_item
假设我有三张牌桌:球队,球员,球队球员.表team_player是一个允许"多对多"关系的桥表.
当有人想要创建新团队时,他们会指定该团队的初始玩家.
如何在同一事务中插入team和team_player行?也就是说,我想在提交新团队行之前插入所有team_player记录.我正在使用JDBC和Oracle.
当我尝试下面的代码时,即使team.id是一个数字(由触发器递增),teamId也会填充一串字母.所以,这似乎不是我刚刚尝试插入的记录的id(但还没有提交).
c = DB.getConnection();
c.setAutoCommit(false);
sql = "INSERT INTO team (name) values (?)";
myInsert = c.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
myInsert.setString(1, "cougars");
int affectedRows = memoInsert.executeUpdate();
String teamId;
ResultSet generatedKeys = myInsert.getGeneratedKeys();
if (generatedKeys.next()) {
teamId = generatedKeys.getString(1);
}
// ...loop through players inserting each player and team.id into team_player
// c.commit();
Run Code Online (Sandbox Code Playgroud)
这是我读到的关于RETURN_GENERATED_KEYS的地方: 如何在JDBC中获取插入ID?
如何在CSS文件中引用资产?
我正在使用Play Framework 2.1.3(Scala).
@font-face
{
font-family: RockSalt;
src: url('...something.../assets/fonts/MyFont.ttf');
format('truetype');
}
Run Code Online (Sandbox Code Playgroud)