Java FetchType=Lazy和optional=false不在JPA中工作
我在我的帐户实体中使用多对一映射Java FetchType=Lazy和optional=false不在JPA中工作,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我在我的帐户实体中使用多对一映射 @ManyToOne(fetch = FetchType.LAZY,optional = false) @JoinColumn(name = "CONTACT_ID", referencedColumnName = "CONTACT_ID", nullable = false) private Contact Contact; 在我的DAO中,我正在检索数据: entitymanager.createQuery("SELECT v FROM A
@ManyToOne(fetch = FetchType.LAZY,optional = false)
@JoinColumn(name = "CONTACT_ID", referencedColumnName = "CONTACT_ID", nullable = false)
private Contact Contact;
在我的DAO中,我正在检索数据:
entitymanager.createQuery("SELECT v FROM Account v").getResultList();
尽管我使用的是optional=fasle和fetchType=Lazy
。我看到它正在运行所有查询并检索引用的表数据
我用的是弹簧靴。下面是我的Entitymanager配置
@Configuration
@EnableTransactionManagement
public class DatabaseConfig {
@Autowired
private Environment env;
@Autowired
private DataSource dataSource;
@Autowired
private LocalContainerEntityManagerFactoryBean entityManagerFactory;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
/*dataSource.setDriverClassName(env.getProperty("db.driver"));*/
dataSource.setUrl(env.getProperty("db.url"));
dataSource.setUsername(env.getProperty("db.username"));
dataSource.setPassword(env.getProperty("db.password"));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
LocalContainerEntityManagerFactoryBean entityManagerFactory =
new LocalContainerEntityManagerFactoryBean();
entityManagerFactory.setDataSource(dataSource);
entityManagerFactory.setPackagesToScan(env.getProperty("entitymanager.packagesToScan"));
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
entityManagerFactory.setJpaVendorAdapter(vendorAdapter);
Properties additionalProperties = new Properties();
// additionalProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
additionalProperties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
// additionalProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
additionalProperties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
entityManagerFactory.setJpaProperties(additionalProperties);
return entityManagerFactory;
}
@Bean
public JpaTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactory.getObject());
return transactionManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
在application.properties中
hibernate.hbm2ddl.auto: update
hibernate.dialect: org.hibernate.dialect.Oracle12cDialect
hibernate.show_sql: true
试试这个:
在给定两个实体之间关系的地方使用@JsonIgnore
@JsonIgnore:as-Spring数据REST将忽略
用@JsonIgnore注释标记
试试这个:
在给定两个实体之间关系的地方使用@JsonIgnore
@JsonIgnore:as-Spring数据REST将忽略
用@JsonIgnore注释标记
您是如何配置persistence.xml的?我正在使用spring boot,因此在java配置类中进行了配置。我已使用详细信息更新了我的问题您是如何配置persistence.xml的?我正在使用spring boot,因此在java配置类中进行了配置。我已使用详细信息我想获取联系人id,但不想获取整个联系人实体。@JsonManaged或类似内容我想获取联系人id,但不想获取整个联系人实体。@JsonManaged或类似内容