gpt4 book ai didi

java - JPA EntityManager 不一致地将对象添加到数据库

转载 作者:行者123 更新时间:2023-11-30 22:12:50 27 4
gpt4 key购买 nike

我正在使用 JPA EntityManager 将项目插入 MySQL 数据库,我有读取文件、收集数据然后将该数据添加到适当文件的代码。我正在写的是我正在尝试做的事情的简化版本,我 100% 感激这既让我更难理解我实际上在做什么,也可能隐藏错误的来源,所以谢谢你的支持与我一起。我使用的对象p是前面生成的,是一个LinkedHashMap的形式

LinkedHashMap<String MyObject>

其中“MyObject”是一个具有多个属性(如“名称”、“重量”、“颜色”)的类,字符串是一个用作主键的 UUID。

private final EntityManagerFactory emf = Persistence.createEntityManagerFactory(myUI.PERSISTENCE_UNIT);
private final EntityManager em = emf.createEntityManager();

for (String key : p.keySet()) {
databaseWriter.writeToDatabase(em, key, p.get(key).getName(),
p.get(key).getColor(), p.get(key).getWeight();
}

“databaseWriter.writeToDatabase”的相关代码是

public void writeToDatabase (EntityManager em, String id, String name,String Color, String weight) {
em.GetTransaction().begin();
MyObjectTable mt = new MyObjectTable();
mt.setId(id);
mt.setColor(color);
mt.setWeight(weight);
mt.setName(name);
em.persist(mt);
em.getTransaction().commit();
}

我已经确认我正在以正确的形式生成对象并将信息正确地传递给函数,但我的行为最奇怪。假设“p”中有15个项目,它只会添加其中的几个,而且它添加的几个是不一致的,甚至“几个”是多少也不一致。我希望它是因为我正在用 EntityManager 做一些愚蠢的事情,这在这里很明显。

如果您需要比这更多的细节,我很乐意提供它们,我只是想不出什么会导致只添加一些对象(并且添加的那些对象具有正确的信息),但只有特定的少数,在随后的尝试中不相同,并且根本没有出现错误。

编辑:我使用的 jpa 提供程序是 EclipseLink,我用我遗漏的东西编辑了工厂

编辑:这是一个例子,一个正在输入的数据的 eclipse 服务器日志没有显示在数据库中,任何人都可以从中收集到任何东西吗?

[EL Finest]: query: 2016-09-14 12:18:23.867--UnitOfWork(1915196068)--Thread(Thread[http-nio-8084-exec-252,5,main])--Execute query InsertObjectQuery(com.myfiles.stuff_the.PartTable[   idPart=99a26bca-d818-4959-a328-75c1f05a1e38 ])
[EL Fine]: sql: 2016-09-14 12:18:23.867--ClientSession(1291663611)--Connection(1232332820)--Thread(Thread[http-nio-8084-exec-252,5,main])--INSERT INTO PartTable (idPart, dateCreated, description, hash, isBasic, lastModified, name, riskGroup, authorId, formatId, nucseqId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
bind => [99a26bca-d818-4959-a328-75c1f05a1e38, 2016-09-14 12:18:23.82, , null, 1, 2016-09-14 12:18:23.82, AXL2 mRNA, null, 1, null, d6f807f0-ac91-4421-8ff2-4940706fd5bb]

我查看了整个日志文件,没有发现任何错误,有正确数量的 persist() 和 commit() 语句,不太确定发生了什么。

最佳答案

原来问题是没有下面这行

em.clear();

在我使用commit之后

关于java - JPA EntityManager 不一致地将对象添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com