给出以下两张表:
CREATE TABLE `soc` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(32),
PRIMARY KEY (`id`));
CREATE TABLE `soc_attitude` (
`soc_id` INT NOT NULL,
`target_soc_id` INT NOT NULL,
`attitude` INT,
PRIMARY KEY (`soc_id`,`target_soc_id`));
在 Soc 类中,我想通过类似这样的字段从 soc_attitude 表中获取所有与 this.soc_id 匹配的行:
private Map<Integer,Integer> attitudes;
这里的地图键是target_soc_id,值是attitude。
我已经做到了这一步:
@Entity
@Table(name = "soc")
public class Soc {
@Id
@Column( name="id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name="name")
private String name;
@ElementCollection
@CollectionTable(name="soc_attitude",joinColumns=@JoinColumn(name="soc_id"))
@Column(name="attitude")
private Map<Integer,Integer> attitudes;
但我认为这将使soc_id成为关键字,attitude成为值。
我应该使用哪些注释?(使用Hibernate 4.3.11.Final)
attitude
是一个JPA实体,它应该是什么样子呢?像这样:Map<Integer, Attitude> attitudes
。在使用时遇到了SQL错误。祝好! - phil294@ManyToMany
和@JoinTable
而不是elem.collection和coll.table。 - phil294