Hibernate 许多人和许多人
我使用Hibernate,我有实体:Hibernate 许多人和许多人,hibernate,one-to-many,many-to-one,mappedby,Hibernate,One To Many,Many To One,Mappedby,我使用Hibernate,我有实体: @Data @Entity public class Country { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private long id; @Column(name = "country_nm") private String countryName; } @Data @Entity
@Data
@Entity
public class Country {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "country_nm")
private String countryName;
}
@Data
@Entity
public class City {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "city_nm")
private String cityName;
}
国家可以有许多城市,城市只有一个国家。
关联这些实体的最佳方式是什么
1) 在City
类中添加City-City
字段,并在其上方添加@ManyToOne
和@JoinColumn
选项?因此,我们将有两个表:country
和city
,city
表将有country\u id列
2) 在Country
类中添加Country-Country
字段,并在其上方添加@OneToMany(mappedBy='Country')
,在City
类中添加City-City
字段,并在其上方添加@ManyToOne
选项?在这种情况下,将有三个表:country
、city
和组合表country\u city
1) 在City类中添加City字段,并添加@ManyTone和
@在它上面是什么?因此,我们将有两个表:
国家和城市,城市表将有国家/地区id列
我想您的意思是在城市类中添加Country Country字段,如果您的目标是单向关系,那么这是正确的,但是joinColumn不应该位于拥有的实体中,它应该在非所有者实体中,因此您必须转到Country类,在那里添加城市列表,并使用@OneToMany with join列对其进行注释
2) 在Country类和中添加Country字段
@上面是OneToMany(mappedBy='country'),并在城市中添加城市字段
类并在其上方添加@ManyToOne anotation?在这种情况下,会有
可以是三个表:国家、城市和组合表国家/城市
这个解决方案有很多错误的地方,首先你不能有像这样的“@oneToMany(mappedBy='country)”,只有当你应用了第一个解决方案并且你想使关系双向时,你才能使用它,即使这不会生成第三个类,如果要生成第三个类,则需要在所属类中使用@JoinTable,而不是@JoinColumn没有“最佳”方法。这完全取决于你想要什么和需要什么。不过,您描述的两种方式是不正确的,您对双向关联映射方式的理解也是错误的。阅读hibernate手册。谢谢,我正在做