【问题标题】:Play! framework with Ebean: PersistenceException玩!带有 Ebean 的框架:PersistenceException
【发布时间】:2012-10-06 14:31:18
【问题描述】:

我有一个扩展 ModelTopic 类。
创建表主题的第一条记录很好,但无法创建另一条记录:

[PersistenceException: 错误执行 DML bindLog[] 错误[错误: 重复键值违反唯一约束“pk_topics”\n 详细信息: 键 (id)=(1) 已存在。]]

异常当然发生在这一行:

topic.save();

这很奇怪,因为:

  1. 以前可以正常工作。
  2. 属性id 是使用注释@Id 定义的,它假设自动递增 到下一个值,但我得到关于duplicate id 的异常。

我应该怎么做才能解决这个问题?

class Model(当然不是所有的,只有相关的)

@Entity
@Table (name = "topics")
public class Topic extends Model {
@Id
public long id;
public String title;
public String content;
@ManyToOne
@JoinColumn(name = "forumId")
public Forum forum;
@ManyToOne
@JoinColumn(name = "userId")
public User user;
public Date date;

public static void create(Topic topic) {
    topic.save();
}

【问题讨论】:

  • 你能显示你的模型和保存它的代码吗?你使用固定装置吗?你的播放版本和操作系统是什么? @Id 是不够的,也许你需要一个序列:objectdb.com/java/jpa/entity/generated。我使用了身份。
  • 我添加了Topic类的代码。我不知道什么是固定装置。我正在使用播放! linux Ubuntu下2.0。

标签: java jpa web playframework-2.0 ebean


【解决方案1】:

我找到了解决方案。当我将id 的访问修饰符改回protected 时,它再次起作用。很奇怪,但现在它完美地工作了。

解释?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多