Raf*_*LDI 3 java myisam hibernate jpa spring-data
我有一个要维护的项目,该项目的持久性层使用JPA,Hibernate并且它在MySQL服务器上运行,数据库不在数据库中 relational,并且引擎MyISAM在所有表上。
我有一些外键关系hps映射为@ManyToOne我实体上的关系。
现在的问题是,这些列中的某些列应该是foreignkeys为了正确映射而创建的,但它们不是(因为引擎是MyISAM,并且DB仅relational是理论上的),因此其中一些列具有错误的值,例如(负数) -1,0,不存在的已故父母)。
@Entity
public class EntityA {
@ManyToOne
@JoinColumn(name="COL_FK")
private EntityB b;
}
Run Code Online (Sandbox Code Playgroud)
在数据库中,可能的值为COL_FK:0,-1,DEAD PARENTS
我既不能更改数据库结构,也不能编辑列中的数据。我所能做的就是更改代码。
我怎么能告诉Hibernate忽略那些值,而不会RuntimeException仅仅因为它的一个元素包含了一个错误的foreingkey值就抛出一个列表。
谢谢。
更新:
@Embeddable
public class EntityA {
@ManyToOne()
@JoinColumn(name = "idClient")
@NotFound(action = NotFoundAction.IGNORE)
private ClientBO idClient;
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪 :
AVERTISSEMENT: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find xx.xxx.xx.xxx.ClientBO with id 210; nested exception is javax.persistence.EntityNotFoundException: Unable to find xx.xx.xx.xxx.ClientBO with id 210
Run Code Online (Sandbox Code Playgroud)
注释您的关联
@NotFound(action=NotFoundAction.IGNORE)
Run Code Online (Sandbox Code Playgroud)
请注意,尽管这已经是一个丑陋的解决方案,但这是又一个hack。Hibernate严重依赖事务(应该如此),而MyISAM,AFIAK不支持事务。我想您已经知道了,但是修复数据库将是一个更好的选择。
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |