Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有来自两个表的数据的实体_Java_Hibernate_Entity - Fatal编程技术网

Java 具有来自两个表的数据的实体

Java 具有来自两个表的数据的实体,java,hibernate,entity,Java,Hibernate,Entity,我可以创建一个从2个(或更多)表检索数据的实体吗 我想要几张桌子: user: id, name, password user_address: idUser, street, city 当只使用一张桌子时,我得到: 用户实体: @Entity public class UserEntity { @Id @GeneratedValue @Column(name = "id") private int id; @Column(name = "user")

我可以创建一个从2个(或更多)表检索数据的实体吗

我想要几张桌子:

user: id, name, password user_address: idUser, street, city 当只使用一张桌子时,我得到:

用户实体:

@Entity
public class UserEntity {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private int id;

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

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

    //+ getter + setters
}
以及使用代码从DB加载用户的方法:

String queryString = "FROM UserEntity WHERE user = :user AND password = :password";
Query query = session.createQuery(queryString);
query.setString("user", userForm.getUser());
query.setString("password", userForm.getPassword());
UserEntity userEntity = (UserEntity) query.uniqueResult();

对。但我建议每个表使用一个java类
User
Address
,然后您希望使用联接注释指定联接表的列


如果不需要两个单独的类,可以使用ResultTransformer。

是。但我建议每个表使用一个java类
User
Address
,然后您希望使用联接注释指定联接表的列


如果您不想要两个单独的类,可以使用ResultTransformer。

这是可能的,但为什么您要这样做而不是将所有内容存储在一个表中?谢谢您的回答。这是因为-不是每个用户都会有地址。所以我想,最好是将它存储在两个表中。如果是这样,用户不应该与另一个地址实体有一个OneToOne关联吗?如果将地址的每个字段直接存储在用户实体中,那么自然的映射是将字段存储在用户表中。快速回答-可以(使用@SecondaryTable注释)。回答更长-您是否限制用户只有一个地址?您在数据定义中没有包含足够的信息,无法确定数据库是否将此关系限制为一对一。这是可能的,但为什么不将所有内容存储在一个表中?谢谢您的回答。这是因为-不是每个用户都会有地址。所以我想,最好是将它存储在两个表中。如果是这样,用户不应该与另一个地址实体有一个OneToOne关联吗?如果将地址的每个字段直接存储在用户实体中,那么自然的映射是将字段存储在用户表中。快速回答-可以(使用@SecondaryTable注释)。回答更长-您是否限制用户只有一个地址?您没有在数据定义中包含足够的信息,无法确定数据库是否将此关系限制为一对一。
String queryString = "FROM UserEntity WHERE user = :user AND password = :password";
Query query = session.createQuery(queryString);
query.setString("user", userForm.getUser());
query.setString("password", userForm.getPassword());
UserEntity userEntity = (UserEntity) query.uniqueResult();