gpt4 book ai didi

java - 如何防止 EclipseLink (JPA 2.0) 清除我的数据库/表?

转载 作者:行者123 更新时间:2023-11-29 01:32:53 26 4
gpt4 key购买 nike

我在带有 MySQL 数据库的 Netbeans 7.0 上使用 EclipseLink (JPA 2.0) - 我根据 this screencast 配置了该数据库.但有时当我坚持一个对象/实体时,我的表会在该对象持续存在之前被清除,并且我得到一个只有这个对象的表(就像它已被清除一样)。我只是简单地在(填充)数据库中添加新条目。

我怎样才能避免这种情况?

这是我的代码:

Movie movie = new Movie(
jsondata.path("Title").getTextValue(),
jsondata.path("Year").getValueAsInt(),
jsondata.path("Genre").getTextValue(),
jsondata.path("Plot").getTextValue(),
jsondata.path("Poster").getTextValue());
persist(movie);

我的 persist() 函数:

public static void persist(Object object) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("AllmoviesPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
em.persist(object);
em.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
em.getTransaction().rollback();
}
em.close();
}

我的电影对象/实体:

@Entity
public class Movie implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@Column(name="MOVIEYEAR")
private int year;
private String genre;
private String synopsis;
private String image;

public Movie(String title, int year, String genre, String synopsis, String image) {
this.title = title;
this.year = year;
this.genre = genre;
this.synopsis = synopsis;
this.image = image;
}

public Movie() {
}

/* ... Getters and Setters stuff ... */

}

我的 persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="AllmoviesPU" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>allmovies.data.Movie</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://123.123.123.123:3306/psanta_allmovies"/>
<property name="javax.persistence.jdbc.password" value="XXXXXX"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.user" value="psanta_allmovies"/>
</properties>
</persistence-unit>
</persistence>

最佳答案

尝试打开日志记录到 FINEST 或 FINE 以查看发生了什么。 ("eclipselink.logging.level"="最好的")。

EclipseLink 确实有一个在启动时重新创建表的选项(“eclipselink.ddl-generation”="drop-and-create-tables"),确保您没有使用它。 NetBeans 或 Glassfish 可能会默认设置此设置,我认为它们可能在开发模式下会这样做。

关于java - 如何防止 EclipseLink (JPA 2.0) 清除我的数据库/表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6048019/

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