我需要帮助才能从这个数据库中创建正确的pojo ...
https://www.dropbox.com/s/j2lfu44zpqfcxb4/dbr.PNG
我尝试过创建这个类......
@Entity
@Table(name="Municipio", catalog="elecciones2014", schema="")
public class Municipio implements Serializable{
@EmbeddedId
private MunicipioPk idMunicipio;
@Basic(optional=false)
@Column(name="nomb_municipio")
private String nomb_municipio;
}
使用此嵌入式课程
@Embeddable
class MunicipioPk implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name="id_depto")
String departamento;
@Column(name="id_municipio")
String idMunicipio;
}
问题是当我想提及' Municipio'来自' JRV'我不知道如何访问字段' id_municipio'。我有这个代码,但它没有工作
@Entity
@Table(name = "JRV", catalog = "elecciones2014", schema = "")
public class Jrv {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_jrv")
private int id;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_municipio",referencedColumnName="idMunicipio")
private Municipio municipio;
@ManyToOne
@JoinColumn(name="DUI",referencedColumnName="dui")
private PadronElectoral dui;
}
有人能帮帮我吗?
我该怎么做?
谢谢你的建议!!
答案 0 :(得分:1)
这里您定义的是单个连接列,但是Municipio实体的PK有两列。此外,referencedColumnName
应该是列的名称而不是实体的属性。
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_municipio",referencedColumnName="idMunicipio")
private Municipio municipio;
所以你可以这样做:
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumns({
@JoinColumn(name="id_municipio", referencedColumnName="id_municipio"),
@JoinColumn(name="id_depto", referencedColumnName="id_depto")
})
private Municipio municipio;
哪个转换为这个SQL(我通过上面提到的修改后从你的实体生成SQL模式得到了这个):
create table elecciones2014.JRV (
id_jrv serial not null,
id_depto varchar(255),
id_municipio varchar(255),
primary key (id_jrv)
);
alter table elecciones2014.JRV
add constraint FK_7scd8alu3nf4tsyh3hq2ryrja
foreign key (id_depto, id_municipio)
references elecciones2014.Municipio;