hibernate 多对一映射问题

Dream_of_you 2016-01-01 02:52:49
举个栗子
@Entity
@Table(name="alipay_account")
public class AlipayAccount {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private Long id;

// 创建时间
@Column(name="create_time" ,insertable =false)
private Date createTime;

// 支付宝帐号
@Column(name="account", length=50 )
private String account;
set/get省略 ....
}
public class User{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id")
private long id;

//用户名
@Column(name="username", length=50 )
private String username;

@ManyToOne(fetch =FetchType.LAZY)
@JoinColumn(name="alipay_id", referencedColumnName="id" )
private AlipayAccount alipayAccount;
set/get省略 ....
}

遇到的问题:1.一个用户可能没有支付宝帐号,因此在表中存的字段alipay_id 为0,这就导致了hibernate查询时会抛出
No row with the given identifier exists: [cn.edu.dragon.model.admin.AlipayAccount#0]的异常
2.为解决1的问题我通过查资料使用注解@NotFound(action=NotFoundAction.IGNORE),这又会引起新的问题,将懒加载
FetchType.LAZY属性覆盖了,变急加载了,当查list的时候极大影响的查询效率

在线坐等大神解决,谢谢啦,困扰我两天了
...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的映射都说不通额,怎么可能多个用户对应一个支付宝帐号,这样支付宝岂不是要遭大祸了,用户里面的支付宝字段要么配OneToOne, 要么配OneToMany
hqq1007 2016-01-04
  • 打赏
  • 举报
回复
我觉得可以先在业务逻辑代码上加一个判断用户是否用支付宝帐号的操作

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧