我目前使用的是spring boot starter数据jpa:2.7.0,它使用的是hibernate:5.6.9。
我在链接多个实体时有一种奇怪的行为。
我得到了三个实体,其中E1包含E2的一个多域列表,E2也包含E3的一个多域列表:
@Entity
public class E1 {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false)
UUID id;
@OneToMany(mappedBy = "e1", fetch = FetchType.EAGER)
List<E2> e2;
}
@Entity
public class E2 {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false)
UUID id;
@ManyToOne
E1 e1;
@OneToMany(mappedBy = "e2", fetch = FetchType.EAGER)
List<E3> e3;
}
@Entity
public class E3 {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", nullable = false, updatable = false)
UUID id;
@ManyToOne
E2 e2;
}
对于每个实体,我定义了简单的存储库,例如:
@Repository
public interface E1Repository extends JpaRepository<E1, UUID> {}
此外,我根据存储库类来访问日期。存储很好,工作正常。
当存储一个E1
和一个E2
的列表时,具有两个E3
的列表会导致我的数据库表中的正确数据。
使用e1Repository.findAll()
检索数据很好,并返回预期的Entitye1
,其中一个e2
和两个e3
。
但是,当使用e1Repository.findById(id)
检索数据时,它返回一个e1
实体,其中包含两个e2
,每个实体包含两个e3
。这两个e2
具有相同的ID。
更改列表时
有人对这种行为有什么解释吗?我做错了什么,或者我可以改变什么来获得正确的数据?
非常感谢!
我认为您可以使用@JoinCol列而不是mappdBy。
另一种方法是使用Crieteria关联,但关联只能与和一起工作! 请在这里帮帮我。
我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方
运行Spring Boot应用程序时,我遇到了一些奇怪的问题。它已配置为使用Log4J2作为其记录器(Logback记录器已被禁用)。 log4j2。xml: 主要问题 我在log4j2中有一些变量替换。xml文件,以允许变化,特别是日志文件名。当我运行应用程序时,日志文件被创建在正确的目录中,并且看起来确实有实际的日志内容。问题是它们的名字不正确。例如,而不是,文件名为${sys:service
我有一些问题要执行。 我需要的: 发布来自用户的消息 将其广播给其他用户 将消息发送给将在下次连接时使用该消息的脱机用户 我实际上: 在index.html页上,我连接到套接字服务器 我有一个发送消息的按钮 我在索引页上打开两个不同的浏览器,我的用户都已连接起来 如果我向服务器发送消息,服务器就会将消息发送给其他用户 如果我向服务器发送第二条消息,它就会将该消息发送给发送该消息的用户。 它在切换,
我必须在
问题内容: 我在GregorianCalendar类中遇到一个奇怪的行为,我想知道我是否真的做得不好。 仅当初始化日期的月份的实际Maximum大于我将日历设置为的月份时,才追加此值。 这是示例代码: 我知道问题是由于日历初始化日期是31天(可能是5月),与设置为2月(28天)的月份混淆了。修复很容易(只需在设置年和月之前将day_of_month设置为1),但是我想知道这确实是想要的行为。有什么