Java 如何使用Hibernate连接两个表的字段?

Java 如何使用Hibernate连接两个表的字段?,java,hibernate,hibernate-annotations,Java,Hibernate,Hibernate Annotations,我有两个表和相关的Java映射 CREATE TABLE country ( code VARCHAR(3) PRIMARY KEY NOT NULL, name VARCHAR(100) NOT NULL ); CREATE TABLE user ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, country_code VARCHAR(3),

我有两个表和相关的Java映射

CREATE TABLE country (
    code VARCHAR(3) PRIMARY KEY NOT NULL,
    name VARCHAR(100) NOT NULL
);


CREATE TABLE user (
    id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    country_code VARCHAR(3),
    FOREIGN KEY ( country_code ) REFERENCES country ( code )
);
这是我的Java实体。国家POJO:

@Entity
@Table(name = "country")
public class Country {

    @Id
    @Column (name = "code")
    private String code;

    @Column (name = "name")
    private String name;
和用户POJO:

@Entity
@Table(name = "user")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @Column(name = "name")
    private String name;

    @Column(name = "country_code")
    private String countryCode;

问题是如何在Hibernate中使用注释将
Contry.code
加入到
User.countryCode
?当我使用Hibernate创建用户对象时,我需要自动绑定这两个字段(code和countryCode)。

您需要
@OneToMany
国家
映射到
用户
实体和相应的
@manytone
用户
映射到
国家

@Entity
@Table(name = "country")
public class Country {

    @Id
    @Column (name = "code")
    private String code;

    @Column (name = "name")
    private String name;

    @OneToMany(mappedBy = "country")
    private Set<User> users;
}

@Entity
@Table(name = "user")
public class User implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @Column(name = "name")
    private String name;

    @ManyToOne
    @JoinColumn(name = "country_code")
    private Country country;
}
@实体
@表(name=“country”)
公营国家{
@身份证
@列(name=“code”)
私有字符串码;
@列(name=“name”)
私有字符串名称;
@OneToMany(mappedBy=“国家”)
私人用户;
}
@实体
@表(name=“user”)
公共类用户实现可序列化{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有整数id;
@列(name=“name”)
私有字符串名称;
@许多酮
@JoinColumn(name=“国家/地区代码”)
私人国家;
}

但我只需要一个countryCode而不是Country对象。@user3279337这就是在hibernate中创建实体之间映射的方法。您可以从
country
参考中获取
countryCode
。@user3279337 BTW,这只是一个非常基本的映射。你可以给出更多的选择。您可能需要阅读hibernate文档以获取更多信息。