当前位置: 首页 > 知识库问答 >
问题:

使用Eben和Play 2.2的单向OneToMany中的例外情况。十、

靳涵亮
2023-03-14

我在玩2.2.1时使用Ebean,我试图在我的实体之间建立一个单向的OneTo多项连接。

不幸的是,我得到了以下例外,我知道如何避免Ebian使用“book\u book\u id”而不是“book\u id”:

[PersistenceException:Query抛出了SQLException:on子句绑定值[197]中的未知列“t1.book\u book\u id”[197]查询为:选择t0。图书编号c0,t1。交叉参考标识c1,t1。账簿t0中的科目c2左外连接交叉参考t1在t1上。book\u book\u id=t0。书号在哪里。图书id=?按t0订购。图书编号]

我的第一堂课:

@Entity
@Table(name="book")
public class Book extends Model {

    @Id
    @Column(name="book_id")
    public int bookId;

    @OneToMany(cascade = CascadeType.ALL)
    public List<Cross> crossReferences;

    public static List<Book> filterByIds(List<Integer> BookIds){

        if (BookIds.isEmpty()){
            List<Book> books = new ArrayList<>();

            return books;
        }
        else {
            Query<Book> query = Ebean.createQuery(Book.class);
            query.where(Expr.in("bookId", bookIds));

            return query.findList();
        }
    }
}

secend类:

@Entity
@Table(name="cross_ref")
public class Cross extends Model {

    @Id
    @Column(name="cross_ref_id")
    public int crossRefId;

    @Column(name="book_id")
    public int bookId;

    public int accno;
}

共有3个答案

唐茂实
2023-03-14

我可以通过插入

@JoinColumn(name="book_id", referencedColumnName = "book_id")

public List<Cross> crossReferences;
公冶智刚
2023-03-14

只是提示:玩Ebean可以相当聪明,所以在许多情况下,你甚至不需要注释连接表和连接列,只要在适用的地方使用适当的类型,瞧:

模型/书。JAVA

@Entity
public class Book extends Model {
    @Id
    public Integer id;
    public static Finder<Integer, Book> find = new Finder<>(Integer.class, Book.class);

    public String name;

    @OneToMany(mappedBy = "book", cascade = CascadeType.ALL)
    public List<CrossReference> crossReferences;

    public static List<Book> filterByIds(List<Integer> bookIds){
       return find.where().in("id", bookIds).findList();
    }

}

模型/交叉参考。JAVA

@Entity
public class CrossReference extends Model {
    @Id
    public Integer id;
    public static Finder<Integer, CrossReference> find = new Finder<>(Integer.class, CrossReference.class);

    @ManyToOne
    public Book book;
}
亢建白
2023-03-14

你有@JoinCol栏位。此外,如果需要设置连接表,请使用@JoinTable注释。

但似乎存在不完整的双边关系(您使用bookID指向Book实体)。

 类似资料:
  • 我对python非常陌生,我正在使用xlwt处理列表和excel表写入。我使用创建了6个colum。我的第一个疑问是,写入中的ID是行ID还是列ID(意味着写入(1,'abc')将写入第一行或第一列)? 现在我有6个列表,我想把每个列表都写到工作表中的一列。怎么写?是有效的write语句(它会将list1写入第0列吗)?如果没有,我该怎么做? 更新:这是我目前正在使用的代码,但它将异常抛出为异常:

  • 我有一个在大学里练习的代码。我已经安装了所有的软件包,但我不知道问题出在哪里。这将是一个小铲运机,只是测试一下。。。 错误消息说: 回溯(最近一次呼叫最后一次): 浏览器。通过xpath(“//*[@id=\”过滤器控制容器\“]/div[3]/div/div/ul/li[4]/a/span”)查找元素。单击文件“C:\Python27\lib\site packages\selenium\web

  • 试图用ggplot2绘制一些图,但无法理解AES中定义的颜色是如何工作的。与审美长度的错误作斗争。 我尝试在主ggplot调用aes中定义颜色来给出传说,但也在geom_line aes中定义颜色。 我怎么能想得更清楚呢?

  • 我正在实现与Android应用程序通信的服务器端应用程序。Android应用程序在最初与C服务器通信之前就已经实现了。现在我想用java代码替换C服务器。Android应用程序与服务器进行通信,通过读卡器中的卡对此人进行身份验证。 身份验证协议包含应用程序和服务器之间要成功完成的几个通信步骤。 应用程序和服务器之间的消息格式如下: 首先,应用程序发送一个类型1的请求来建立与读卡器中sim卡的连接。

  • 我和我的Kafka制作人遇到了一个奇怪的问题。我使用Kafka-0.11服务器/客户端版本。我有一个zookeper和一个kafka经纪人节点。此外,我还创建了带有3个分区的“事件”主题: 在我的Java代码中,我创建了具有以下属性的producer: 此外,我还向Producer#send()方法添加了一个回调,该方法将失败的消息添加到队列中,该队列由另一个“重新发送”线程在循环中迭代: 一切正

  • 问题内容: 设计可能引发异常的单例类的最佳方法是什么? 在这里,我有一个Singleton(使用Bill Pugh的方法,在Wiki中为Singleton记录)。 如果在2处引发异常,我想将其传播给调用方。但是,我不能从第1行引发异常。 因此,如果单例对象创建不正确,我唯一的选择是返回空对象吗? 谢谢 PS我确实意识到,如果该Singleton通过不同的类加载器加载或反射加载,则可能会损坏,但是对