精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-28
其它吧,我觉得用eclipselink配Oracle数据库,是绝配:
它背后是Oracle,也也随oracle一起发布的版本,最关键是它能支持与Oracle数据库直接相关的内容。 以前一直用Hibernate,还是不错的。 没用过Open JPA. |
|
返回顶楼 | |
发表时间:2012-06-04
哥们,问个问题;
我用这个持久化主表对象,因为级联关系会接着持久化子表。 但是这个JPA好像不能保证这个持久化的先后顺序,有时会出现先持久化子表,导致找不到外键找不到(parent key not found);这个bug以前的业务中就没出现过,我就纳闷为什么突然会在批处理的时候会出现。 今儿做了个简单测试,写了一个很简单的例子,居然也有概率出现这个问题 这个在网上有看添加个@ForeignKey但是这个不是标准; 另外还可以整个撒配置<property...../>但是这个表的级联关系忒复杂,很多表建得不规范,又经过了很多轮测试,不得让随便改的,这个也基本用不起。 对这个你有撒看法,有撒解决方案没? |
|
返回顶楼 | |
发表时间:2012-06-05
shellwell 写道 哥们,问个问题;
我用这个持久化主表对象,因为级联关系会接着持久化子表。 但是这个JPA好像不能保证这个持久化的先后顺序,有时会出现先持久化子表,导致找不到外键找不到(parent key not found);这个bug以前的业务中就没出现过,我就纳闷为什么突然会在批处理的时候会出现。 今儿做了个简单测试,写了一个很简单的例子,居然也有概率出现这个问题 这个在网上有看添加个@ForeignKey但是这个不是标准; 另外还可以整个撒配置<property...../>但是这个表的级联关系忒复杂,很多表建得不规范,又经过了很多轮测试,不得让随便改的,这个也基本用不起。 对这个你有撒看法,有撒解决方案没? 这个问题我还真没有遇到过,我也没有用过非常复杂的数据库测试。 能不能把你写的测试代码和数据库发给我测试一下 simennet@gmail.com |
|
返回顶楼 | |
发表时间:2012-06-05
simen_net 写道 shellwell 写道 哥们,问个问题;
我用这个持久化主表对象,因为级联关系会接着持久化子表。 但是这个JPA好像不能保证这个持久化的先后顺序,有时会出现先持久化子表,导致找不到外键找不到(parent key not found);这个bug以前的业务中就没出现过,我就纳闷为什么突然会在批处理的时候会出现。 今儿做了个简单测试,写了一个很简单的例子,居然也有概率出现这个问题 这个在网上有看添加个@ForeignKey但是这个不是标准; 另外还可以整个撒配置<property...../>但是这个表的级联关系忒复杂,很多表建得不规范,又经过了很多轮测试,不得让随便改的,这个也基本用不起。 对这个你有撒看法,有撒解决方案没? 这个问题我还真没有遇到过,我也没有用过非常复杂的数据库测试。 能不能把你写的测试代码和数据库发给我测试一下 simennet@gmail.com 异常简单;EntityA,EntityB; 有一个one-to-many的关系从EntityA到EntityB; EntityA a = new EntityA(); EntityB b = new EntityB(); a.add(b); entityManager.persist(a); entityManager.flush(); 完了。 报错是parent Key not found;code=2291, state=23000; 以前业务不得问题;现在出这个有点莫名其妙;感觉JPA也不得那么次嘛。 |
|
返回顶楼 | |
发表时间:2012-06-05
shellwell 写道 异常简单;EntityA,EntityB;
有一个one-to-many的关系从EntityA到EntityB; EntityA a = new EntityA(); EntityB b = new EntityB(); a.add(b); entityManager.persist(a); entityManager.flush(); 完了。 报错是parent Key not found;code=2291, state=23000; 以前业务不得问题;现在出这个有点莫名其妙;感觉JPA也不得那么次嘛。 请问你用什么做的事务管理 我使用Spring的注解事务,这种关联是经常使用,从来没有碰到过这个问题 |
|
返回顶楼 | |
发表时间:2012-06-05
simen_net 写道 shellwell 写道 异常简单;EntityA,EntityB;
有一个one-to-many的关系从EntityA到EntityB; EntityA a = new EntityA(); EntityB b = new EntityB(); a.add(b); entityManager.persist(a); entityManager.flush(); 完了。 报错是parent Key not found;code=2291, state=23000; 以前业务不得问题;现在出这个有点莫名其妙;感觉JPA也不得那么次嘛。 请问你用什么做的事务管理 我使用Spring的注解事务,这种关联是经常使用,从来没有碰到过这个问题 EJB容器自动管理的。 |
|
返回顶楼 | |
发表时间:2012-06-05
shellwell 写道 simen_net 写道 请问你用什么做的事务管理 我使用Spring的注解事务,这种关联是经常使用,从来没有碰到过这个问题 EJB容器自动管理的。 这个我倒没有测试过,手头上也没有环境可以测试···· |
|
返回顶楼 | |
发表时间:2012-06-06
最后修改:2012-06-06
shellwell 写道 simen_net 写道 shellwell 写道 哥们,问个问题;
我用这个持久化主表对象,因为级联关系会接着持久化子表。 但是这个JPA好像不能保证这个持久化的先后顺序,有时会出现先持久化子表,导致找不到外键找不到(parent key not found);这个bug以前的业务中就没出现过,我就纳闷为什么突然会在批处理的时候会出现。 今儿做了个简单测试,写了一个很简单的例子,居然也有概率出现这个问题 这个在网上有看添加个@ForeignKey但是这个不是标准; 另外还可以整个撒配置<property...../>但是这个表的级联关系忒复杂,很多表建得不规范,又经过了很多轮测试,不得让随便改的,这个也基本用不起。 对这个你有撒看法,有撒解决方案没? 这个问题我还真没有遇到过,我也没有用过非常复杂的数据库测试。 能不能把你写的测试代码和数据库发给我测试一下 simennet@gmail.com 异常简单;EntityA,EntityB; 有一个one-to-many的关系从EntityA到EntityB; EntityA a = new EntityA(); EntityB b = new EntityB(); a.add(b); entityManager.persist(a); entityManager.flush(); 完了。 报错是parent Key not found;code=2291, state=23000; 以前业务不得问题;现在出这个有点莫名其妙;感觉JPA也不得那么次嘛。 最近几天学了点jpa onetomany, owning side 是many端(双向关联的时候),foreign key在many那里, 你要persist B估计才行 |
|
返回顶楼 | |
发表时间:2012-06-06
shellwell 写道 simen_net 写道 请问你用什么做的事务管理 我使用Spring的注解事务,这种关联是经常使用,从来没有碰到过这个问题 EJB容器自动管理的。 楼上说的有道理,建议把映射的源码贴出来看看是不是配置错误了 |
|
返回顶楼 | |
发表时间:2012-06-06
public class AEntity implements Serializable {
@Id @Column(name="A_ID", nullable = false) private Long aId; @OneToMany(mappedBy = "bEntity", fetch=FetchType.LAZY, cascade = {CascadeType.PERSIST,CascadeType.REMOVE}) private List<BEntity> bEntityList; } public class BEntity implements Serializable { @Id @Column(name = "A_ID", nullable = false, insertable = false, updatable = false) private Long aId; @ManyToOne @JoinColumn(name = "A_ID", referencedColumnName = "A_ID") private AEntity aEntity; } 相关联的就这样. |
|
返回顶楼 | |