在Hibernate中进行OneTONE映射时,如何更新数据库中的数据?
我有一个用户类,它包含一个带有OneToOne映射的address,当我试图运行它时,它并没有将数据插入到db(Postgres)中,我也没有得到任何错误在Hibernate中进行OneTONE映射时,如何更新数据库中的数据?,hibernate,one-to-one,Hibernate,One To One,我有一个用户类,它包含一个带有OneToOne映射的address,当我试图运行它时,它并没有将数据插入到db(Postgres)中,我也没有得到任何错误 package com.hibernate.sample; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; i
package com.hibernate.sample;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Table(name="Siva01")
@Entity
public class UserClass {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "UserId")
private int id ;
@Column(name = "UserName")
private String userName;
@OneToOne(cascade=CascadeType.PERSIST)
@JoinColumn(name="AddressId")
private Address shippingAddress;
public Address getShippingAddress() {
return shippingAddress;
}
public void setShippingAddress(Address shippingAddress) {
this.shippingAddress = shippingAddress;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
地址类别:
package com.hibernate.sample;
import javax.annotation.Generated;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Address {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String StreetName;
private String city;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStreetName() {
return StreetName;
}
public void setStreetName(String streetName) {
StreetName = streetName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
Hibernate.com配置文件
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://localhost:5432/hibernateDb</property>
<property name="connection.username">postgres</property>
<property name="connection.password">postgres</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<!-- "create" will recreate entire schema. This is used during initial design when the schemas go through frequent changes -->
<!-- "update" will update the existing schema -->
<property name="hbm2ddl.auto">update</property>
<!-- Mapping XML (resource) or annotated class -->
<mapping class="com.hibernate.sample.UserClass"/>
<mapping class="com.hibernate.sample.Address"/>
</session-factory>
</hibernate-configuration>
org.postgresql.Driver
jdbc:postgresql://localhost:5432/hibernateDb
博士后
博士后
1.
org.hibernate.dialogue.PostgreSqlDialogue
线
org.hibernate.cache.internal.NoCacheProvider
真的
更新
日志::
Sep 7, 2014 9:39:28 AM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000399: Using default transaction strategy (direct JDBC transactions)
Sep 7, 2014 9:39:28 AM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
Sep 7, 2014 9:39:28 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000228: Running hbm2ddl schema update
Sep 7, 2014 9:39:28 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000102: Fetching database metadata
Sep 7, 2014 9:39:28 AM org.hibernate.tool.hbm2ddl.SchemaUpdate execute
INFO: HHH000396: Updating schema
public class HibernateOne { // Inserts data code
public static void main(String[] args) {
// TODO Auto-generated method stub
UserClass u1 = new UserClass();
//u1.setId(4);
u1.setUserName("SaiRam");
Address ad01 = new Address();
ad01.setId(6);
ad01.setStreetName("PamurRoad");
ad01.setCity("Bangalore");
u1.setShippingAddress(ad01);
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml");
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.persist(u1);
tx.commit();
session.close();
} }
2014年9月7日上午9:39:28 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
信息:HH000399:使用默认事务策略(直接JDBC事务)
2014年9月7日上午9:39:28 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory
信息:HH000397:使用ASTQueryTranslatorFactory
2014年9月7日上午9:39:28 org.hibernate.tool.hbm2ddl.SchemaUpdate执行
信息:HH000228:正在运行hbm2ddl架构更新
2014年9月7日上午9:39:28 org.hibernate.tool.hbm2ddl.SchemaUpdate执行
信息:HH000102:正在获取数据库元数据
2014年9月7日上午9:39:28 org.hibernate.tool.hbm2ddl.SchemaUpdate执行
信息:HH000396:正在更新架构
公共类HibernateOne{//插入数据代码
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
UserClass u1=新的UserClass();
//u1.setId(4);
u1.设置用户名(“SaiRam”);
地址ad01=新地址();
ad01.setId(6);
ad01.setStreetName(“PamurRoad”);
ad01.塞特城(“班加罗尔”);
u1.设置ShippingAddress(ad01);
Configuration cfg=新配置();
configure(“hibernate.cfg.xml”);
SessionFactory SessionFactory=cfg.buildSessionFactory();
Session Session=sessionFactory.openSession();
事务tx=会话.beginTransaction();
会话。持续(u1);
tx.commit();
session.close();
} }
请说明我在上述代码中出错的地方。update将数据插入数据库的代码和为此生成的相应日志在哪里?能否显示插入数据的代码片段?@Chaitanya-我添加了插入代码