gpt4 book ai didi

java - 无法延迟初始化角色集合无法初始化代理 - 无 session

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:32 24 4
gpt4 key购买 nike

我正在使用 spring mvc 并使用 spring data jpa,并且遇到此错误无法延迟初始化角色集合无法初始化代理 - 无 session 我知道发生这种情况是因为我没有打开的 session ,但我不知道如何在连接到数据库后保持 session 打开这是到目前为止我的代码:

我的jpa配置类

@Configuration
@EnableSpringConfigured
@ComponentScan( basePackages = {"com.abc.domain", "com.abc.repository", "com.abc.service","com.abc.authenticate"})
@EnableJpaRepositories(basePackages="com.abc.repository")
public class ConfigJPA
{

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory()
throws ClassNotFoundException
{

LocalContainerEntityManagerFactoryBean em =
new LocalContainerEntityManagerFactoryBean();

em.setDataSource( dataSource() );
em.setPackagesToScan("com.abc.domain");
em.setPersistenceProviderClass(HibernatePersistence.class);
em.setJpaProperties( asignarPropiedades() );

return em;
}

//Propiedades Hibernate
Properties asignarPropiedades() {

Properties jpaProperties = new Properties();

jpaProperties.put("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect");
jpaProperties.put("hibernate.format_sql", true);
jpaProperties.put("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy");
jpaProperties.put("hibernate.show_sql", true);

return jpaProperties;
}


@Bean
public DataSource dataSource(){

DriverManagerDataSource dataSource =
new DriverManagerDataSource();

dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");

//farmatodo22
dataSource.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:XE");
dataSource.setUsername("DATBASE");
dataSource.setPassword("mypassword");

return dataSource;
}

@Bean
public JpaTransactionManager transactionManager()
throws ClassNotFoundException
{

JpaTransactionManager transactionManager =
new JpaTransactionManager();

transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());

return transactionManager;
}
}

这是我的域类

用户类别

@Entity
@Table(name="User")
public class User implements Serializable {

private static final long serialVersionUID = 1L;


//**PRIMARY KEY**//

@Id
@SequenceGenerator(name="User_id_seq", sequenceName="SEQ_User")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="User_id_seq")
@Column(name="ID_USER", unique=true, nullable=false, precision=8)
private Long idUser;




@ManyToOne
@JoinColumn(name="id_ldap_server", nullable = false)
private ServerLdap serverLdap;




@ManyToMany
@JoinTable
(
name="Usuario_Rol",
joinColumns =
{
@JoinColumn (name="ID_USER", referencedColumnName="ID_USER")
},
inverseJoinColumns =
{
@JoinColumn (name="id_rol", referencedColumnName="id_rol")
}
)
private List<Rol> roles;

这是我的角色类

    @Entity
@Table(name="ROL")
public class Rol implements Serializable
{

private static final long serialVersionUID = 1L;


//***PRIMARY KEY***///

@Id
@SequenceGenerator(name="ROL_ID_GENERATOR", sequenceName="SEQ_ROL")
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="ROL_ID_GENERATOR")
@Column(name="id_rol", unique=true, nullable=false, precision=8)
private Long idRol;




@ManyToMany(mappedBy="roles")
private List<User> users;

}

我正在尝试在 User 和 Rol 之间建立 ManyToMany 关系,如果我输入 fetchType = EAGER,效果会很好,但我不想使用该获取类型,因为我认为效率不高。

最佳答案

其中一个选项是使用在 View 中打开 session ,但它几乎没有缺点,并且被一些人认为是一种不好的做法。我建议阅读以下 SO 帖子以做出明智的选择。

关于java - 无法延迟初始化角色集合无法初始化代理 - 无 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26594328/

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