我需要帮助从这个数据库创建正确的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;

}

问题是当我想从“JRV”引用“Municipio”时,不知道如何访问字段“id\u 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;
}

有人能帮我吗?
我该怎么做?
谢谢你的建议!!

最佳答案

这里您定义的是单联接列,但是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;

10-05 18:35