spring-data-jpa实体继承

spring-jpa中我们要将SQL映射到对象,尤其是在spring boot这种高度自动化的环境下使用,大量的最优目录结构与命名规则可以大大降低配置,约定大于配置贯穿其中。例如我们定义查询dao,继承JpaRepository即可。然后返回的对象,我们可以定义model:

@Entity
@Table(name = “user_tab_name”)
class User extends BaseUser {
}
这里@Entity让@EntityScan能够扫描到,可以指定名字,@Table也可以不指定,默认为user表,标准命名规则,驼峰转换全小写下划线。
@EnableJpaRepositories可以指定dao的包路径。启动spring老是报错,说是build EntityManager错误,后来发现是model里面定义的不对,model里面完整定义:

@Entity
@Table("user_tab_name")
class User extends BaseUser {
@Id
@GneratedValue
private Long id;
}

发现是我注解不对,但是报出的异常信息实在模糊,博主也是查的很苦,实体manager不能建立,已定要确认是否是model定义问题。然后我的User是要继承抽象类的,但是我如果把字段放抽象类,也会报找不到model.后来去StackOverFlow找到解决方案:

Using @Inheritance

@Entity
@Table(name="TEST")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class Test {
    ...
}

@Entity
public class ExtendedTest 
    extends Test {
    ...
}  
or @MappedSuperclass

@MappedSuperclass
public class Test {
    ...
}

@Entity
public class ExtendedTest 
    extends Test {
    ...
}

第一种方法无效,第二种方法搞定。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值