我正在使用JPA EntityManager将项目插入MySQL数据库,我有代码读取文件,收集数据,然后将该数据添加到适当的文件。我正在写的是我正在尝试做的简化版本,我欣赏100%,这使得它更难理解我实际上在做什么,并可能隐藏错误的来源,所以感谢您承担跟我。我用被检体P之前生成,并且是形式的LinkedHashMap中JPA EntityManager不一致地将对象添加到数据库
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,我已经eddited厂里的东西我错过了
编辑:这里是正在进入一个数据的一个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]
我经历了整个日志文件看,并不能发现任何错误,有正确数量的坚持()和commit()语句,真的不知道是怎么回事。
多数民众赞成JPA提供日志是 –
我是新来使用JPA是什么提供程序日志以及如何查看它? – mstorkson
您选择了一些JPA实现(Hibernate,EclipseLink,DataNucleus,OpenJPA?)作为您的JPA提供程序。他们的软件创建一个日志。查看所选软件的文档。 –