You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by LongkerDandy <lo...@gmail.com> on 2010/12/26 12:21:01 UTC

Subquery Question

Hi

I have two entities like these:

public class MovieImpl implements Movie {
    @Id
    @Column(name = "ID")
    private String id;

    // List of movie information
    @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
    private List<MovieInfoImpl> information = new
ArrayList<MovieInfoImpl>();
}

public class MovieInfoImpl implements MovieInfo {
    @Id
    @Column(name = "ID")
    private String id;

    @Column(name = "NAME")
    private String name;
}


And I want to query all the Movie items with a specific MovieInfo name.
So I tried something like this:
"SELECT m FROM MOVIE m WHERE m.information = (SELECT i FROM MOVIE_INFO i
WHERE LOWER(i.name) LIKE :name)"

But I got a exception told me this can only return one row result.
What do I miss?

Regards
LongkerDandy

Re: Subquery Question

Posted by LongkerDandy <lo...@gmail.com>.
Hi

After change to
        SELECT m FROM MOVIE m join m.information i WHERE LOWER(i.name) LIKE
:name
It seems to work

On Sun, Dec 26, 2010 at 7:21 PM, LongkerDandy <lo...@gmail.com>wrote:

> Hi
>
> I have two entities like these:
>
> public class MovieImpl implements Movie {
>     @Id
>     @Column(name = "ID")
>     private String id;
>
>     // List of movie information
>     @OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
>     private List<MovieInfoImpl> information = new
> ArrayList<MovieInfoImpl>();
> }
>
> public class MovieInfoImpl implements MovieInfo {
>     @Id
>     @Column(name = "ID")
>     private String id;
>
>     @Column(name = "NAME")
>     private String name;
> }
>
>
> And I want to query all the Movie items with a specific MovieInfo name.
> So I tried something like this:
> "SELECT m FROM MOVIE m WHERE m.information = (SELECT i FROM MOVIE_INFO i
> WHERE LOWER(i.name) LIKE :name)"
>
> But I got a exception told me this can only return one row result.
> What do I miss?
>
> Regards
> LongkerDandy
>