我遇到了一个问题,在我的JPA@ElementCollection
表中没有任何内容被持久化。据我所知,我想我理解了@ElementCollection
的基本思想。我猜出现问题的原因是,我在一个可嵌入的对象中有一个ElementCollection
。
一个简单的例子:
@Entity
public class CalculationHistory {
private CalculationReason calculationReason;
@Embedded
public CalculationReason getCalculationReason() { return calculationReason; }
protected void setCalculationReason(CalculationReason calculationReason {
this.calculationReason = calculationReason;
}
...
}
@Embeddable
public class CalculationReason {
private List<String> descriptions;
@ElementCollection
@CollectionTable(name = "calculation_description", joinColumns = @JoinColumn("calculation_history_id"))
@Column(name = "description")
public List<String> getDescriptions() { return descriptions; }
public void setDescriptions(List<String> descriptions) {
this.descriptions = descriptions;
}
...
}
有什么线索表明可能出了什么问题吗?
为了简洁起见,我将尽量使附加信息尽可能简短。
创建计算原因
public static CalculationReason create(List<String> descriptions) {
return new CalculationReason(descriptions);
}
创建计算历史记录
public static CalculationHistory create(CalculationReason calculationReason) {
CalculationHistory history = new CalculationHistory();
history.setCalculationReason(calculationReason);
...
return history;
}
调试信息在计算历史#创建
HibernateDAO仓库
@Override
public <S extends E> S save(S entity) {
return getHibernateTemplate().merge(getEntityClass().getName(), entity);
}
Hibernate生成的SQL
Hibernate: insert into calculation_history (created_date, modified_date, modified_by, reason, system) values (?, ?, ?, ?, ?)
看起来HiberNate甚至没有生成插入到calculation_description的...我期待的SQL(忽略额外的字段)
经过数小时的反复试验,我通过初始化说明
字段解决了问题:
private List<String> descriptions = Lists.newArrayList();
老实说,我不太确定为什么这真的有所不同,所以欢迎任何外部意见。
我正在尝试将嵌入式数据库derby与spring框架结合使用。我可以插入数据并读取它。除了数据库没有持久化之外,一切都很好。当我关闭应用程序并再次运行时,数据不存在。我猜数据库是再次创建的,但不知道为什么。 我的代码: 和Spring的输出日志是 create-db.sql内容是 解决方案:接受的答案指向正确的方向,但误差为db;create=true无法启动。然后,我查看了Netbeans ID
我有一个简单的JPA存储库,看起来如下所示: 和两个有一个单子映射的类,如下所示: . 现在,我知道我可以很容易地编辑和持久化一个像这样的用户实例: 但是,在没有指向实例的指针的上下文中,如何持久化实例,f.I.: 我可以只调用吗? 我是否需要自动连接另一个存储库()并在其上调用.save()?
问题内容: 我一直在研究与SQL数据库接口的Persistent库。假设我有一个包含配方,配方,成分和RecIng表的数据库。 我对持久性的理解(绝对有限)使我相信我应该定义如下表: 这样,可以使用Esqueleto获取这些表之间的内部联接: 这将返回(Recipe,RecIng,Ingredient)的元组。 我真正想要的是一种查询配方的方法,其结果如下: 除了定义一组额外的数据类型并转换元组之
本文向大家介绍Redis持久化深入详解,包括了Redis持久化深入详解的使用技巧和注意事项,需要的朋友参考一下 1、概述 Redis 是内存数据库,如果不能将内存中的数据保存到磁盘中,那么一旦服务器进程退出,服务器的数据库数据也会消失,所以Redis提供了持久化的功能,redis分为两种持久化方式:RDB和AOF。有以下几个特点: 1.RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储。
问题内容: 我正在尝试编写一个Java程序,该程序将自动下载并命名一些我最喜欢的网络漫画。由于我将请求来自同一域的多个对象,因此我希望有一个持久的http连接,在下载所有漫画之前,我可以一直保持打开状态。以下是我正在进行的工作。如何在不打开新的http连接的情况下从相同域但路径不同发出另一个请求? 问题答案: 根据此处的文档,HTTP持久性在Java中是透明处理的,尽管它提供了一些选项,也可以通过
我有一个名为的类,它有一个狗的列表: 狗类有一个小狗列表: 当我试图创建一个新的人类,它有一只狗,狗又有一只小狗,并且我使用带有spring的Hibernate JPA存储库来保存人类时: 我得到以下错误: 但是,如果我用默认值创建人类,并用人类存储库保存他,它就能工作,并且保存了小狗。 我不明白为什么小狗没有自动保存,我也不想使用一个单独的存储库来保存小狗。当狗定义时,Hibernate不应该自