簡體   English   中英

EntityManager 不會將對象合並到數據庫

[英]EntityManager doesn't merge object to database

我有一個 java spring 應用程序並使用 JPA

JPA 初始化代碼

@Configuration
@EnableJpaRepositories
public class Application {

@Bean
public DataSource dataSource() {
    BasicDataSource dataSource = new BasicDataSource();
    dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/database");
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUsername("root");
    dataSource.setPassword("pass");
    dataSource.setInitialSize(20);
    dataSource.setMaxActive(30);
    return dataSource;
}

@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
    LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();
    lef.setDataSource(dataSource);
    lef.setJpaVendorAdapter(jpaVendorAdapter);
    lef.setPackagesToScan("repository");
    return lef;
}

@Bean
public JpaVendorAdapter jpaVendorAdapter() {
    HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
    hibernateJpaVendorAdapter.setShowSql(false);
    hibernateJpaVendorAdapter.setGenerateDdl(true);
    hibernateJpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.MySQLDialect");
    return hibernateJpaVendorAdapter;
}

}

我也有簡單的實體對象

@Entity
public class Client {
@Id
private int id;
private String name;
private String email;
private String phone;

public Client(){};

public Client(int id, String name, String email, String phone){
   this.id=id;
    this.name=name;
    this.email=email;
    this.phone=phone;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getPhone() {
    return phone;
}

public void setPhone(String phone) {
    this.phone = phone;
}

}

和存儲庫

@Repository
public class ProductRepository {

@PersistenceContext
EntityManager em;

@Transactional
public void saveClient() {
Client cl = new Client(1,"Alex","alex@gmail.com","1111111111");
em.merge(cl);

    }
}

當我直接從控制器調用此方法時,我沒有將數據合並到數據庫

@Controller
@ComponentScan("repository")
@RequestMapping("/")
public class HomeController {

@Autowired
ProductRepository productRepository;

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home() {
productRepository.saveClient();  
return "home";
    }
}

我沒有收到任何編譯或運行時異常和錯誤,但合並不會導致我的對象被保存

試試這個

@Configuration
@EnableTransactionManagement
public class Application {}

而不是

@Configuration
@EnableJpaRepositories
public class Application {}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM