gpt4 book ai didi

java - (org.hibernate.LazyInitializationException)org.hibernate.LazyInitializationException : could not initialize proxy - no Session

转载 作者:行者123 更新时间:2023-12-01 10:05:50 25 4
gpt4 key购买 nike

我开始学习使用 Hibernate 来开发 Java 中的 Web 系统,但我在类的映射和使用方面遇到了一些问题。

我有两个表:tblusuario和tblperfilusuario,tblusuario使用tblperfilusuario创建外键,即用户包含个人资料。

使用Postgres数据库+Netbeans和Hibernate 4.3.1

TblUsuario 实体:

    @Entity
@Table(name = "tblusuario", schema = "public")
@AttributeOverride(name = "id", column = @Column(name = "codigousuario"))
@SequenceGenerator(name = "id_sequence",
sequenceName = "tblusuario_codigousuario_seq",
allocationSize = 1)
public class TblUsuario extends BaseEntityInt {

private TblPerfilUsuario tblperfilusuario;
private String nome;
private String usuario;
private String senha;

public TblUsuario() {
}

public TblUsuario(String nome, String usuario, String senha) {
this.nome = nome;
this.usuario = usuario;
this.senha = senha;
}

public TblUsuario(TblPerfilUsuario tblperfilusuario, String nome, String usuario, String senha) {
this.tblperfilusuario = tblperfilusuario;
this.nome = nome;
this.usuario = usuario;
this.senha = senha;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "codigoperfilusuario")
public TblPerfilUsuario getTblperfilusuario() {
return this.tblperfilusuario;
}

public void setTblperfilusuario(TblPerfilUsuario tblperfilusuario) {
this.tblperfilusuario = tblperfilusuario;
}

@Column(name = "nome", nullable = false, length = 100)
public String getNome() {
return this.nome;
}

public void setNome(String nome) {
this.nome = nome;
}

@Column(name = "usuario", nullable = false, length = 40)
public String getUsuario() {
return this.usuario;
}

public void setUsuario(String usuario) {
this.usuario = usuario;
}

@Column(name = "senha", nullable = false, length = 20)
public String getSenha() {
return this.senha;
}

public void setSenha(String senha) {
this.senha = senha;
}

}

TblPerfilUsuario 实体:

    @Entity
@Table(name = "tblperfilusuario", schema = "public")
@AttributeOverride(name = "id", column = @Column(name = "codigoperfilusuario"))
@SequenceGenerator(name = "id_sequence",
sequenceName = "tblperfilusuario_codigoperfilusuario_seq",
allocationSize = 1)
public class TblPerfilUsuario extends BaseEntityInt {

private String nome;
private boolean ativo;
private Set<TblUsuario> tblusuarios = new HashSet(0);

public TblPerfilUsuario() {
}

public TblPerfilUsuario(String nome, boolean ativo) {
this.nome = nome;
this.ativo = ativo;
}

public TblPerfilUsuario(String nome, boolean ativo, Set<TblUsuario> tblusuarios) {
this.nome = nome;
this.ativo = ativo;
this.tblusuarios = tblusuarios;
}

@Column(name = "nome", nullable = false, length = 100)
public String getNome() {
return this.nome;
}

public void setNome(String nome) {
this.nome = nome;
}

@Column(name = "ativo", nullable = false)
public boolean isAtivo() {
return this.ativo;
}

public void setAtivo(boolean ativo) {
this.ativo = ativo;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "tblperfilusuario")
public Set<TblUsuario> getTblusuarios() {
return this.tblusuarios;
}

public void setTblusuarios(Set<TblUsuario> tblusuarios) {
this.tblusuarios = tblusuarios;
}

}

每次我尝试使用TblUsuario.tblperfilusuario.getNome()时都会出现以下错误:

e = (org.hibernate.LazyInitializationException) org.hibernate.LazyInitializationException: could not initialize proxy - no Session

任何帮助将不胜感激。谢谢

最佳答案

将 TblUsuario 类中的注释 @ManyToOne(fetch = FetchType.LAZY) 更改为 @ManyToOne(fetch = FetchType.EAGER)。

例如:


公共(public)类 TblUsuario 扩展 BaseEntityInt {
...
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(名称 = "codigoperfilusuario")
公共(public) TblPerfilUsuario getTblperfilusuario() {
返回 this.tblperfilusuario;
}
...

关于java - (org.hibernate.LazyInitializationException)org.hibernate.LazyInitializationException : could not initialize proxy - no Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com