Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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_Sql_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java 获取具有一对一关系的实体

Java 获取具有一对一关系的实体,java,sql,spring,hibernate,spring-mvc,Java,Sql,Spring,Hibernate,Spring Mvc,我在程序中有两个实体 @Entity @Table(name = "users") public class User { @OneToMany(mappedBy = "senderUser") private List<Message> sentMessages; @OneToMany(mappedBy = "recipientUser") private List<Message> receivedMessages; 在我看来,当你在登录时下载一个用户时,你会和

我在程序中有两个实体

@Entity
@Table(name = "users")
public class User {

@OneToMany(mappedBy = "senderUser")
private List<Message> sentMessages;

@OneToMany(mappedBy = "recipientUser")
private List<Message> receivedMessages;
在我看来,当你在登录时下载一个用户时,你会和他的消息以及这两个列表混在一起。但我想检查一下,然后在屏幕上显示其中一个列表的大小,因为我在数据库中有两条消息,同时在控制器中显示

System.out.println("Length: " + ((User) session.getAttribute("user")).getReceivedMessages().size());
在浏览器中抛出错误

    Exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.jonki.Entity.User.receivedMessages, could not initialize proxy - no Session


会话似乎有问题,但怎么办?

假设您的用户类应该进行如下修改

User.java

@Entity
@Table(name = "users")
public class User {

@OneToMany(mappedBy = "senderUser",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private List<Message> sentMessages;

@OneToMany(mappedBy = "recipientUser",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private List<Message> receivedMessages;
@实体
@表(name=“users”)
公共类用户{
@OneToMany(mappedBy=“senderUser”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
私人列表信息;
@OneToMany(mappedBy=“recipientUser”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
私有列表接收的消息;
将以下条目添加到hibernate.cfg.xml中,如下所示

 <property name="hibernate.enable_lazy_load_no_trans" value="true"/>


希望这有帮助。

假设您必须提到一个
获取类型
,以便加载
接收的消息。
现在我“未能懒洋洋地初始化角色集合:com.jonki.Entity.User.receivedMessages,无法初始化代理-无会话”。它可以“FetchType.EAGER”,但我有“FetchType.LAZY”。请与我共享hibernat如果您需要在hibernate配置中添加
,请参阅此文件以了解更多详细信息。
@Entity
@Table(name = "users")
public class User {

@OneToMany(mappedBy = "senderUser",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private List<Message> sentMessages;

@OneToMany(mappedBy = "recipientUser",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
private List<Message> receivedMessages;
 <property name="hibernate.enable_lazy_load_no_trans" value="true"/>