提前多多感谢。 :) 我正在使用Hibernate 4.3.5。我写了一个Hibernate应用程序。我在hbm.xml文件中配置了表名和其中一个列的名称以及使用注释。当我运行应用程序时,创建的表具有在hbm.xml文件中设置的属性。在我看来,它应该使用注释,它可能是为了向后兼容,但如果我有一个遗留的hibernate应用程序有hbm文件,现在我决定使用注释来覆盖现有的hbm.xml配置怎么办? 这是我的代码。 我的实体类
package com.infinite.entity;
import javax.persistence.Column;
import javax.persistence.Table;
import org.hibernate.annotations.Entity;
@javax.persistence.Entity
@Table(name="ANNOTATION_USER")
public class User {
private int userId;
@Column(name="ANNOTATION_FIRSTNAME")
private String firstName;
String lastName, city, country;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
我的User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 27 Feb, 2014 8:38:13 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.infinite.entity.User" table="HBM_USER">
<id name="userId" type="int">
<column name="USERID" />
<generator class="native" />
</id>
<property name="firstName" type="java.lang.String">
<column name="HBM_FIRSTNAME" />
</property>
<property name="lastName" type="java.lang.String">
<column name="LASTNAME" />
</property>
<property name="city" type="java.lang.String">
<column name="CITY" />
</property>
<property name="country" type="java.lang.String">
<column name="COUNTRY" />
</property>
</class>
</hibernate-mapping>
我的申请文件
package com.infinite.entity;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Test {
public static void main(String[] args) {
User user= new User();
user.setCity("Dewas");
user.setCountry("india");
user.setFirstName("SGN");
user.setLastName("Jai ho");
user.setUserId(100);
// TODO Auto-generated method stub
Configuration configuration=new Configuration();
configuration=configuration.configure();
SessionFactory factory=configuration.buildSessionFactory();
Session session=factory.openSession();
Transaction transaction= session.beginTransaction();
session.save(user);
//user.setCountry("Australia");
transaction.commit();
session.close();
}
}
最后输出(生成查询)
Hibernate:
insert
into
HBM_USER
(HBM_FIRSTNAME, LASTNAME, CITY, COUNTRY)
values
(?, ?, ?, ?)
答案 0 :(得分:1)
而不是
配置配置=新配置();
使用
配置配置= new AnnotationConfiguration()
这将优先考虑注释。