2016-09-27 55 views
1

工作,我在我的帳戶實體FetchType =懶惰和可選=假不JPA

@ManyToOne(fetch = FetchType.LAZY,optional = false) 
    @JoinColumn(name = "CONTACT_ID", referencedColumnName = "CONTACT_ID", nullable = false) 
    private Contact Contact; 

使用多對一映射在我的DAO我retreving數據

entitymanager.createQuery("SELECT v FROM Account v").getResultList(); 

雖然我是使用optional = fasle and fetchType = Lazy。我看到它正在運行所有查詢並檢索引用的表數據。

我使用的春天boot.Below是我的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 
+0

你如何配置你的persistence.xml? – sirandy

+0

我使用的是spring配置,因此在java配置類中進行了配置。我已經更新了我的問題的詳細信息 – Developer

回答

0

試試這個:

使用@JsonIgnore,你給關係兩個實體之間。

@JsonIgnore:因爲Spring Data REST將忽略使用@JsonIgnore註釋標記 的字段或獲取者。

+0

我想獲取contact_id但我不想獲取整個聯繫人實體。 – Developer