1、hibernate 可以根据POJO里面的注解来生产表!
2、需要在hibernate的配置里把自动建表打开!
解决方案 »
- 帖子太长,占据了3层楼,请各位解决问题
- spring配置C3P0的问题
- sql查询时in()中的参数过长
- struts中的actionform问题
- hibernate的映射文件的问题
- 关于websphere的几个问题,大家能帮我看下吗,谢谢了
- 请教xsl:for-each中的条件能否组合?
- 为什么我在tomcat5里面配置的jndi数据源老是找不到!
- 初学java,错误提示java.lang.StackOverflowError/Exception in thread "main"
- resin的编码问题
- struts2.0的迭代标签<s:iterator>怎么用????
- 谁能提供一些JacORB的详细资料,中文的最好.网上有的那种简单配置就不用了,谢谢了.
然后在hibernate的配置里加上<property name="hibernate.hbm2ddl.auto">update</property>
启动项目就会自动建表!
没有错!~!只需要加这个就可以了!~!我现在都是用的这个!~!
不过上面的update应该改成create才能自动创建表
2、需要在hibernate的配置里把自动建表打开!
可以在java源文件(POJO类),数据库实现脚本之间进行生成。楼主试试
甚至POJO 类也可以生成的
我把我写的例子发给你参考下
类文件
@Entity
public class Person { private int id;
private String name;
private String phone;
private String address;
@Id @GeneratedValue
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 getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
} public Person(){}
public Person(String name,String phone,String address){
this.name=name;
this.phone=phone;
this.address=address;
}
}
<?xml version="1.0"?>
<persistence 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_1_0.xsd" version="1.0">
<!-- file:///D:\hibernate\hibernate-entitymanager-3.3.2.CR1\resources\org\hibernate\ejb\persistence_1_0.xsd -->
<persistence-unit name="test">
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="root"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.jdbc.fetch_size" value="255"/>
<property name="hibernate.jdbc.batch_size" value="10"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="false"/>
</properties>
</persistence-unit>
</persistence>
create 每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
create-drop 加载hibernate时创建,退出是删除表结构
update 加载hibernate自动更新数据库结构
Hiberate.cfg.xml配置文件里面 加一条语句:位置<session-factory>
语句:<property name="hbm2ddl.auto">update</property>
</session-facotry> jpa(java 持久性 api)的规范
hibernate 从3.2开始,就开始兼容jpa。
Hiberate.cfg.xml配置文件里面 加一条语句:位置<session-factory>
语句:<property name="hbm2ddl.auto">update</property>
</session-facotry> jpa(java 持久性 api)的规范
hibernate 从3.2开始,就开始兼容jpa。
楼主好像不太明白jpa的概念,要使用jpa就要选择一种实现,呵呵
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.zcq.dao.User
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:219)
at com.zcq.dao.UserDAO.save(UserDAO.java:49)
at com.zcq.dao.Test.main(Test.java:16)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.zcq.dao.User
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
... 2 more
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.zcq.dao.User
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:219)
at com.zcq.dao.UserDAO.save(UserDAO.java:49)
at com.zcq.dao.Test.main(Test.java:16)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.zcq.dao.User
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
... 2 more