Sto provando a forzare JPA/Hibernate per generare e utilizzare solo il nome in miniatura in lettere minuscole. Ho implementato un NamingStrategy come questo:Che cosa significa errore "org.hibernate.DuplicateMappingException"?
public class MyNamingStrategy extends DefaultNamingStrategy {
@Override
public String classToTableName(String className) {
return super.classToTableName(className).toLowerCase();
}
}
Ho applicato impostando questa proprietà in persistence.xml:
<property name="hibernate.ejb.naming_strategy" value="entities.strategy.MyNamingStrategy"/>
Quando faccio questo ottengo questo stacktrace:
SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
org.hibernate.DuplicateMappingException: Same physical table name [planning] references several logical table names: [Planning], [OrderProductMan_Planning]
at org.hibernate.cfg.Configuration$MappingsImpl.addTableBinding(Configuration.java:2629)
at org.hibernate.cfg.annotations.TableBinder.buildAndFillTable(TableBinder.java:254)
at org.hibernate.cfg.annotations.TableBinder.bind(TableBinder.java:177)
Che cosa significa il
Same PHY nome della tabella sica [pianificazione] fa riferimento a diversi nomi di tabelle logiche: [Pianificazione], [OrderProductMan_Planning]
significa?
Entità dell'errore, semplificate il più possibile. Fammi sapere se ti serve il resto.
@Entity
public class Planning implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private Integer qty;
@ManyToOne
private OrderProductMan orderProduct;
....
}
@Entity
@Table
public class OrderProductMan implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
private Integer opId;
@Basic(optional = false)
private int qty;
@ManyToOne(optional = false)
private ProductMan produse;
@ManyToOne(optional = false)
private OrderMan orders;
@Transient
private int totalScheduled;
@Transient
private int totalProduced;
// ...
}
Potresti fornire un po 'più di informazioni, come le mappature delle tue entità. – Bozho
Ho aggiornato la mia domanda. Fammi sapere se hai bisogno di più. Grazie! – Bogdan
Sei sicuro di non provare a creare tabelle già esistenti? Il messaggio: 'Lo stesso nome di tabella fisica [pianificazione] fa riferimento a diversi nomi di tabelle logiche: [Pianificazione]' mi fa pensare che la versione maiuscola potrebbe già essere lì e la versione con custodia inferiore non può essere creata. Tenere presente che la maggior parte dei motori DB non fa distinzione tra maiuscole e minuscole. –