问题
I use Eclipse Indigo with plugin Hibernate Tools (JBoss by red hat) for database connection I use Microsoft SQL Server 2008 JDBC Driver.
When I try to use Reverse Engineering tool (hibernate code generation configuration tool) to generate class based on database table, instead of "string" type fields I get "Serializable" type fields.
import java.io.Serializable;
/**
* Customers generated by hbm2java
*/
public class Customers implements java.io.Serializable {
private Serializable customerId;
private Serializable companyName;
private Serializable contactName;
private Serializable contactTitle;
private Serializable address;
private Serializable city;
private Serializable region;
private Serializable postalCode;
private Serializable country;
private Serializable phone;
private Serializable fax;
public Customers() {
}
public Customers(Serializable customerId, Serializable companyName) {
this.customerId = customerId;
this.companyName = companyName;
}
public Customers(Serializable customerId, Serializable companyName,
Serializable contactName, Serializable contactTitle,
Serializable address, Serializable city, Serializable region,
Serializable postalCode, Serializable country, Serializable phone,
Serializable fax) {
this.customerId = customerId;
this.companyName = companyName;
this.contactName = contactName;
this.contactTitle = contactTitle;
this.address = address;
this.city = city;
this.region = region;
this.postalCode = postalCode;
this.country = country;
this.phone = phone;
this.fax = fax;
}
public Serializable getCustomerId() {
return this.customerId;
}
public void setCustomerId(Serializable customerId) {
this.customerId = customerId;
}
public Serializable getCompanyName() {
return this.companyName;
}
public void setCompanyName(Serializable companyName) {
this.companyName = companyName;
}
public Serializable getContactName() {
return this.contactName;
}
public void setContactName(Serializable contactName) {
this.contactName = contactName;
}
public Serializable getContactTitle() {
return this.contactTitle;
}
public void setContactTitle(Serializable contactTitle) {
this.contactTitle = contactTitle;
}
public Serializable getAddress() {
return this.address;
}
public void setAddress(Serializable address) {
this.address = address;
}
public Serializable getCity() {
return this.city;
}
public void setCity(Serializable city) {
this.city = city;
}
public Serializable getRegion() {
return this.region;
}
public void setRegion(Serializable region) {
this.region = region;
}
public Serializable getPostalCode() {
return this.postalCode;
}
public void setPostalCode(Serializable postalCode) {
this.postalCode = postalCode;
}
public Serializable getCountry() {
return this.country;
}
public void setCountry(Serializable country) {
this.country = country;
}
public Serializable getPhone() {
return this.phone;
}
public void setPhone(Serializable phone) {
this.phone = phone;
}
public Serializable getFax() {
return this.fax;
}
public void setFax(Serializable fax) {
this.fax = fax;
}
}
回答1:
You need to edit "hibernate.reveng.xml" And map the JDBC fields to the Hibernate Types like
<type-mapping>
<sql-type jdbc-type="NUMERIC" precision='20' scale="0" hibernate-type="Long" />
</type-mapping>
Also to get more concrete answer just specify the Database Table Structure of Customer(s) Table.
Hope this helps.
回答2:
add into yours hibernate.reveng.xml following type-mapping element
**<type-mapping>
<sql-type jdbc-type="NVARCHAR" hibernate-type="string"/>
<sql-type jdbc-type="VARCHAR" hibernate-type="string"/>
</type-mapping>**
来源:https://stackoverflow.com/questions/7456061/reverse-engineering-with-hibernate-tools-in-eclipse-indigo