小编lat*_*atj的帖子

使用Ebean/Play的OptimisticLockException

我有一个使用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)

java jpa playframework ebean playframework-2.1

10
推荐指数
3
解决办法
7056
查看次数

如何描述Ebean的桥接表?

可以说我有这些表:

ORDER: id
ITEM: id
ORDER_ITEM: order_id, item_id

表:ORDER_ITEMORDER和之间的桥表ITEM.

我如何描述这三人组Ebean

我宁愿不使用原始SQL,以便我仍然可以创建和更新这些实体.

更新于 11月9日星期六02:32:40 UTC 2013

好吧,让我们更难以解决这个问题,更能代表我的实际情况.列名称不符合约定:

ORDER: order_number
ITEM: item_number
ORDER_ITEM: my_order, my_item

java jpa playframework ebean playframework-2.2

8
推荐指数
1
解决办法
6153
查看次数

在事务中插入后获取id(Oracle)

假设我有三张牌桌:球队,球员,球队球员.表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?

java sql oracle jdbc

7
推荐指数
1
解决办法
1万
查看次数

访问css play框架内的资产

如何在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)

css scala playframework playframework-2.0

7
推荐指数
1
解决办法
1793
查看次数