- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
尽管有“fetch = FetchType.EAGER”,但我遇到了常见异常“org.hibernate.LazyInitializationException:无法初始化代理 - 无 session ”,我可以't(不想)手动管理hibernate session (我使用Spring-Boot-starter-data-jpa)。
我有一个 Hilder 实体,其中包含 CommonType(TapeA 或 TypeB)的属性:
@Entity
public class Holder<T extends CommonType> {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Any(metaColumn = @Column(name = "type", nullable = false), optional = false, fetch = FetchType.EAGER)
@Cascade(org.hibernate.annotations.CascadeType.ALL )
@AnyMetaDef(
idType = "long",
metaType = "string",
metaValues = {
@MetaValue(value = "TypeA", targetEntity = TypeB.class),
@MetaValue(value = "TypeB", targetEntity = TypeA.class)
})
@JoinColumn(name = "property_id", nullable = false)
private T type;
//getters and setters}
B 型看起来像 A 型:
@Entity
public class TypeA implements CommonType {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private double param=0;
//getters and setters
}
以及 Holder 的存储库:
import org.springframework.transaction.annotation.Transactional;
@Transactional
public interface HolderRepository extends CrudRepository<Holder, Long> {
}
运行者:
@Configuration
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(Application.class);
HolderRepository repository = context.getBean(HolderRepository.class);
TypeA simpleDeviceState = new TypeA();
Holder<TypeA> holder = new Holder<>(simpleDeviceState);
repository.save(holder);
Holder holder1=repository.findAll().iterator().next();
TypeA typeA= (TypeA) holder1.getType();
System.out.println("Param: "+typeA.getParam());
context.close();
}}
Pom 仅包含 org.springframework.boot::spring-boot-starter-data-jpa 和 com.h2database::h2。
打印点出现异常。我想我得到 org.hibernate.LazyInitializationException 因为 fetch = FetchType.EAGER 不起作用。
级联也仅适用于 PERSIST。也许是混合 Hibernate 和 JPA 的问题,但我无法处理它。提前致谢!
最佳答案
这不是一个好的解决方案,但它确实有效。但我想得到一个更好的。它是带有 @Transactional 和 Hibernate.initialize 的服务:
@Component
@Transactional
public class ServiceHolder {
@Autowired
HolderRepository holderRepository;
public Holder getH(long id) {
Holder holder = holderRepository.findOne(id);
Hibernate.initialize(holder.getType());
return holder;
}
}
关于java - LazyInitializationException 与 @Any(fetch = FetchType.EAGER) 和 Spring-boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24286475/
显然,可以实现 Haskell,使其在不改变语言语义的情况下急切地求值。如果这是真的,如何处理无限数据结构? http://csg.csail.mit.edu/pubs/haskell.html Th
有没有什么方法可以像@ManagedBean(eager=true ) 来自 javax.faces 包? @Named @ApplicationScoped public Mail() { ...
使用@ApplicationScoped @Named @Eager,我的@EJB注入(inject)的@Stateless bean未正确实例化并评估为空。 我有一个@ApplicationScop
我必须删除两个分隔符之间的字符串,即 从“123XabcX321”我想要“123321”。 对于一个简单的案例,我很好: $_=<>; s/X(.*)X//; print; 但是,如果像“123Xab
我有一个对象层次结构,订单,联系人,地址: public class Order { public virtual Contact BillingContact { get; set; }
Eager 模式仅支持 TF native 优化器我在以下尝试过的每个优化器中都会遇到此错误: def create_model(): model = tf.keras.models.Sequ
我有这样的数据设计:交易属于授权,而授权又属于客户。或者用结构体表示: type Transaction struct { shared.Transaction // transaction
我想在 Scheme 中做一个懒惰的列表。这是我到目前为止。 ;; Constructor for Pairs (define (cons-stream a b) (cons a (λ() b))
今天是个好日子 我是 Laravel 的新手,目前正在用它构建我的第一个简单的新闻应用程序 我有一个简单的查询,使用 laravel 的预先加载功能 但是在这个急切的加载功能中,我想根据某些条件获取某
我正在制作一个动态表单,让用户使用 vue.js 自动生成带有游戏统计信息的图像,并使用 Keen-ui。我是 vue.js 的新手,过去两周开始学习它。 现在,我在使用 eager-ui 进行选择下
我 fork 了 eager/dashboards github 存储库,并尝试创建一个 Dockerfile 以在 Docker 容器中运行仪表板。 我的 fork :https://github.
我的实体: @Entity @NoArgsConstructor public class Company { @Id @Getter @GeneratedValue(strategy =
在我的实体中,我必须使用 fetch = FetchType.EAGER 因为我有一个错误: nested exception is org.hibernate.LazyInitializationE
我在 Java 中使用 play 2.0.4。我正在尝试从 play 提供的内存数据库中保存和检索值(Ebean 是底层 JPA 实现)。下面是一些示例代码: @NoobDisclaimer ("I'
在 Pro .NET Performance - Optimize Your C# Applications 的第 96 页上,它谈到了 GC 急切根收集: For each local variab
我无法从数据库加载对象及其相对映射对象。可能我的“ map 系统”是错误的。 在数据库中保存对象(及其相对映射对象)时,一切正常,因此对象似乎已正确映射。 Utente是我的“主”对象 publ
我需要使用急切查询在 Laravel 中执行子查询,但结果始终为空。 查询: $project = Log::where('project_id', $id)->with(['log_occurenc
我有这个程序: var planetStream = require('../../'); var app = require('http').createServer(handler); var i
我需要与FetchType.EAGER(下面的示例)建立关系,但我有异常(exception)。如果我将 FetchType.EAGER 更改为 FetchType.LAZY 一切正常,但我确实需要
我正在使用 EF6 并尝试急切获取对象的整个结构。问题是我正在使用继承。 假设我有这个类(class)。 数据库上下文 DbSet A { get; set; } 示例类 public class A
我是一名优秀的程序员,十分优秀!