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”。这修正了例外情况。