Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非唯一列一对多映射上的Hibernate映射_Java_Database_Hibernate - Fatal编程技术网

Java 非唯一列一对多映射上的Hibernate映射

Java 非唯一列一对多映射上的Hibernate映射,java,database,hibernate,Java,Database,Hibernate,我有两张桌子 Person id --> PK name media_id Media id --> PK media_id other_details Media.Media\u id将具有重复的值 现在我想将所有媒体记录加载到具有给定媒体id的个人中 public class Person{ @Id private id; private String name; @OneToMany (**Want to

我有两张桌子

Person
   id --> PK
   name
   media_id

Media
  id --> PK
  media_id
  other_details
Media.Media\u id将具有重复的值

现在我想将所有媒体记录加载到具有给定媒体id的个人中

public class Person{

    @Id
    private id;

    private String name;

    @OneToMany  (**Want to map using MEDIA ID**)
    private List<Media> media= new ArrayList<>();

}

人对媒体是单向的,想知道如何进行这种映射吗这不是一种单一的关系。你可以像这样使用@Formula

public class Person{

@Id
private id;

private String name;

private int media_Id // Add a mediaId field to refer to it in the formula

@Transient
@Formula("SELECT * FROM MEDIA WHERE MEDIA_ID = media_Id")
private List<Media> media= new ArrayList<>();

}

那么人和媒体是一对多吗?Media.Media\u id应该是Media.person\u id?是打字错误吗?如果没有,则很有可能是因为媒体有两列,一列称为id,另一列称为Media_id…..获取错误,org.hibernate.MappingException:无法确定以下列的类型:java.util.List,在表中:PLAYER,列:[org.hibernate.mapping.Formula SELECT*FROM Media WHERE Media_id=Media_id]@OneToMany@FormulaSELECT*来自媒体,其中媒体ID=媒体ID私有列表媒体=新阵列列表;如果“@OneToMany”解决了这个问题,我猜你有一个中间人。我尝试了一个类似的案例,但不想将此人分配的媒体存储在DB中,因此我在媒体列表中添加了“@Transient”。这修正了例外情况。