hibernate 注解的 lazy配置
问题:1对多要求查1的一方时多的一方也查出我在1的一方配置了lazy=false可是还是不行还需要配置其他么比如cache、fetch属性么最好能用注解配置说明一下不胜感...
问题:
1对多 要求查1的一方时 多的一方也查出
我在1的一方配置了lazy=false 可是还是不行 还需要配置其他么 比如cache、fetch属性么
最好能用注解配置说明一下 不胜感激 展开
1对多 要求查1的一方时 多的一方也查出
我在1的一方配置了lazy=false 可是还是不行 还需要配置其他么 比如cache、fetch属性么
最好能用注解配置说明一下 不胜感激 展开
2个回答
展开全部
假设Order 与 OrderItem为一对多关联。
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToMany: 指明Order 与OrderItem关联关系为一对多关系
mappedBy: 定义类之间的双向关系。如果类之间是单向关系,不需要提供定义,如果类和类之间形成双向关系,我们就需要使用这个属性进行定义,
否则可能引起数据一致性的问题。
cascade: CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作,
而且这种关系是递归调用的。举个例子:Order 和OrderItem有级联关系,那么删除Order 时将同时删除它所对应的OrderItem对象。
而如果OrderItem还和其他的对象之间有级联关系,那么这样的操作会一直递归执行下去。cascade的值只能从CascadeType.PERSIST(级联新建)、
CascadeType.REMOVE(级联删除)、CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)中选择一个或多个。
还有一个选择是使用CascadeType.ALL,表示选择全部四项。
fatch: 可选择项包括:FetchType.EAGER 和FetchType.LAZY。前者表示关系类(本例是OrderItem类)在主类(本例是Order类)加载的时候同时加载;
后者表示关系类在被访问时才加载,默认值是FetchType. LAZY。
你应该使用 FetchType.EAGER
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OneToMany: 指明Order 与OrderItem关联关系为一对多关系
mappedBy: 定义类之间的双向关系。如果类之间是单向关系,不需要提供定义,如果类和类之间形成双向关系,我们就需要使用这个属性进行定义,
否则可能引起数据一致性的问题。
cascade: CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作,
而且这种关系是递归调用的。举个例子:Order 和OrderItem有级联关系,那么删除Order 时将同时删除它所对应的OrderItem对象。
而如果OrderItem还和其他的对象之间有级联关系,那么这样的操作会一直递归执行下去。cascade的值只能从CascadeType.PERSIST(级联新建)、
CascadeType.REMOVE(级联删除)、CascadeType.REFRESH(级联刷新)、CascadeType.MERGE(级联更新)中选择一个或多个。
还有一个选择是使用CascadeType.ALL,表示选择全部四项。
fatch: 可选择项包括:FetchType.EAGER 和FetchType.LAZY。前者表示关系类(本例是OrderItem类)在主类(本例是Order类)加载的时候同时加载;
后者表示关系类在被访问时才加载,默认值是FetchType. LAZY。
你应该使用 FetchType.EAGER
更多追问追答
追问
我也是这样配置的 可是还是读不出来刚刚更新的那个值
是不是mysql数据库级别的配置
有这个属性 要配置么
@Cache(usage = CacheConcurrencyStrategy.NONE)
追答
这是二级缓存配置,可以不配置,根据你的实际需要进行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询