Reputation: 1794
I am creating POJO classes and mapping files from Sql Server table by using Hibernate 4.3. But It is creating all 'nvarchar' fields to 'Serializable'. I want them to be 'String' type.
In my reveng.xml file I mentioned -
<type-mapping>
<sql-type jdbc-type="NVARCHAR" hibernate-type="string" />
<sql-type jdbc-type="VARCHAR" hibernate-type="string" />
</type-mapping>
but no help.
My Reverse Engineering file is -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
<schema-selection match-catalog="Copy_Up-Tourism" match-schema="dbo"/>
<type-mapping>
<sql-type jdbc-type="NVARCHAR" hibernate-type="string" />
<sql-type jdbc-type="VARCHAR" hibernate-type="string" />
</type-mapping>
<table-filter match-name="Contents"/>
<table-filter match-name="CategoryDatas"/>
<table-filter match-name="TileExperience"/>
<table-filter match-name="PushTypes"/>
<table-filter match-name="DestinationDatas"/>
<table-filter match-name="PlaceDatas"/>
<table-filter match-name="EventDatas"/>
<table-filter match-name="YoutubeVideoTag"/>
<table-filter match-name="PushManagers"/>
<table-filter match-name="Activities"/>
<table-filter match-name="Languages"/>
<table-filter match-name="Categories"/>
</hibernate-reverse-engineering>
I tried many solutions in SO like Link but no help. Please help
Upvotes: 3
Views: 1779
Reputation: 398
My reveng file is like
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd">
<hibernate-reverse-engineering>
<type-mapping>
<sql-type jdbc-type="NVARCHAR" hibernate-type="string" />
</type-mapping>
<table-filter match-name="TempTable"/>
</hibernate-reverse-engineering>
POJO created
public class TempTable implements java.io.Serializable {
private int tempId;
private String data;
public TempTable() {
}
public TempTable(int tempId) {
this.tempId = tempId;
}
public TempTable(String data) {
this.data = data;
}
public int getTempId() {
return this.tempId;
}
public void setTempId(int tempId) {
this.tempId = tempId;
}
public String getData() {
return this.data;
}
public void setData(String data) {
this.data = data;
}
}
Conclusion just add
<type-mapping>
<sql-type jdbc-type="NVARCHAR" hibernate-type="string" />
</type-mapping>
to reveng file :)
Upvotes: 0
Reputation: 8230
Please do the following:
Change this:
<sql-type jdbc-type="NVARCHAR" hibernate-type="string" />
To this:
<sql-type jdbc-type="NVARCHAR" hibernate-type="java.lang.String" />
Add in your jdbc.properties file:
For oracle
:
hibernatetool.metadatadialect=org.hibernate.cfg.reveng.dialect.OracleMetaDataDialect
For others:
H2MetaDataDialect
dialect for work around tweaks in the H2 database
JDBCMetaDataDialect
dialect that uses standard JDBC for reading metadata
MySQLMetaDataDialect
dialect that uses mysql for reading metadata
Then as usual perform:
Upvotes: 4