3

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

Community
  • 1
  • 1
Vivek Mishra
  • 1,772
  • 1
  • 17
  • 37

2 Answers2

4

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:

  1. maven -> update
  2. clean/rebuild project
GingerHead
  • 8,130
  • 15
  • 59
  • 93
0

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 :)

Tanuj Verma
  • 388
  • 2
  • 7