Problème avec InheritanceType.JOINED sous postgres?
Salut à tous,
Voici pour tous les GEEKs Hibernate, j'ai problème d'héritage avec principalement le stratégie: "InheritanceType.JOINED". Ci-joint les mes différentes classes.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
@Entity
@javax.persistence.Table(name= "EMP", schema= "edu")
@Inheritance(strategy= InheritanceType.JOINED)
@DiscriminatorColumn(name= "EMP_TYPE", discriminatorType= DiscriminatorType.STRING)
public abstract class Employee {
@Column(name = "NAME_") private String name;
@Column(name = "S_DATE") @Temporal(TemporalType.DATE) private Date startDate;
@Id private long id= System.currentTimeMillis();
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public String toString() {
return "Employee id: " + getId() + " name: " + getName();
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
@Entity
@javax.persistence.Table(name= "PT_EMP", schema= "edu")
@DiscriminatorValue("3")
public class PartTimeEmployee extends Employee {
@Column(name = "H_RATE")
private float hourlyRate;
public float getHourlyRate() {
return hourlyRate;
}
public void setHourlyRate(float hourlyRate) {
this.hourlyRate = hourlyRate;
}
public String toString() {
return "PartTimeEmployee id: " + getId() + " name: " + getName();
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
@Entity
@javax.persistence.Table(name= "FT_EMP", schema= "edu")
@DiscriminatorValue("2")
public class FullTimeEmployee extends Employee {
private long salary;
private long pension;
public long getPension() {
return pension;
}
public void setPension(long pension) {
this.pension = pension;
}
public long getSalary() {
return salary;
}
public void setSalary(long salary) {
this.salary = salary;
}
public String toString() {
return "FullTimeEmployee id: " + getId() + " name: " + getName();
}
} |
Comme vous pouvez le constater, il s'agit d'un héritage assez simple. Mais mon problème est le suivant. Dès que passe ma stratégie d'héritage à "InheritanceType.JOINED", la colonne "EMP_TYPE" n'est pas générée. Mais si j'utilise les deux autres stratégies, tout se passe nikel.
Quelqu'un aurait-il une idée?
Voici ma config. technique.
Hibernate3 --> 3.6.4
Base postgres --> 9.0
name : PostgreSQL
version : 9.0.1
major : 9
minor : 0
Driver ->
name : PostgreSQL Native Driver
version : PostgreSQL 8.4 JDBC3 (build 702)
major : 8
minor : 4
Jar -> postgresql-8.4-702.jdbc3.jar
Bon voilà tout. Je suis preneur de tout proposition.