Terlepas dari semua posting lain, saya tidak dapat menemukan solusi untuk kesalahan ini dengan GlassFish, di MacOSX, NetBeans 7.2.
Here the error :
SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer
prepare method
SEVERE: Exception while preparing the app
SEVERE: [PersistenceUnit: supmarket] Unable to build EntityManagerFactory
...
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity:
com.supmarket.entity.Sale column: customerId
(should be mapped with insert="false" update="false")
Berikut kodenya:
Sale.java
@Entity
public class Sale {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(nullable=false)
private Long idFromAgency;
private float amountSold;
private String agency;
@Temporal(javax.persistence.TemporalType.DATE)
private Date createdate;
@Column(nullable=false)
private Long productId;
@Column(nullable=false)
private Long customerId;
@ManyToOne(optional=false)
@JoinColumn(name="productId",referencedColumnName="id_product")
private Product product;
@ManyToOne(optional=false)
@JoinColumn(name="customerId",referencedColumnName="id_customer")
private Customer customer;
public void Sale(){}
public void Sale(Long idFromAgency, float amountSold, String agency
, Date createDate, Long productId, Long customerId){
...
}
// then getters/setters
}
Customer.java
@Entity
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id_customer")
private Long id_customer;
@Column(nullable=false)
private Long idFromAgency;
private String gender,
maritalState,
firstname,
lastname,
incomeLevel;
@OneToMany(mappedBy="customer",targetEntity=Sale.class, fetch=FetchType.EAGER)
private Collection sales;
public void Customer(){}
public void Customer(Long idFromAgency, String gender, String maritalState,
String firstname, String lastname, String incomeLevel) {
...
}
}
Product.java
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id_product")
private Long id_product;
@Column(nullable=false)
private Long idFromAgency;
private String name;
@OneToMany(mappedBy="product",targetEntity=Sale.class, fetch=FetchType.EAGER)
private Collection sales;
//constructors + getters +setters
}
hibernate
jakarta-ee
mappingexception
canardman
sumber
sumber
customerId
? (misalnya dari JSON).Customer customer = entityManager.getReference(customerId, Customer.class); sale.setCustomer(customer);
@EmbeddedId
kunci komposit antaracustomerId
dan bidang lain diCustomer
kelas? Dalam hal ini saya membutuhkan kedua kolom berulang dalam pemetaan, apakah saya benar?@MapsId("customerId")
, lihat stackoverflow.com/questions/16775055/hibernate-embeddedid-joinJika Anda terjebak dengan database lawas di mana seseorang telah menempatkan anotasi JPA tetapi TIDAK menentukan hubungannya dan Anda sekarang mencoba untuk menentukannya untuk digunakan dalam kode Anda, maka Anda mungkin TIDAK dapat menghapus customerId @Column karena kode lain dapat langsung merujuknya. Dalam kasus tersebut, tentukan hubungan sebagai berikut:
Ini memungkinkan Anda untuk mengakses hubungan. Namun, untuk menambah / memperbarui hubungan, Anda harus memanipulasi kunci asing secara langsung melalui nilai @Column yang ditentukan. Ini bukan situasi yang ideal, tetapi jika Anda menghadapi situasi seperti ini, setidaknya Anda dapat menentukan hubungannya sehingga Anda dapat menggunakan JPQL dengan sukses.
sumber
ManyToOne
bidang pemetaan, saya memerlukan bidang yang langsung dipetakan ke kolom gabungan.gunakan ini, apakah bekerja untuk saya:
sumber
Jika Anda telah memetakan kolom dan secara tidak sengaja menetapkan nilai yang sama untuk name dan referencedColumnName di @JoinColumn hibernate memberikan kesalahan bodoh yang sama
Kesalahan:
Disebabkan oleh: org.hibernate.MappingException: Kolom berulang dalam pemetaan untuk entitas: com.testtest.SomeCustomEntity kolom: COLUMN_NAME (harus dipetakan dengan insert = "false" update = "false")
sumber
Semoga ini bisa membantu!
sumber
Berhati-hatilah untuk menyediakan hanya 1 penyetel dan pengambil untuk atribut apa pun. Cara terbaik untuk melakukan pendekatan adalah dengan menuliskan definisi semua atribut kemudian menggunakan utilitas penyetel dan pengambil gerhana daripada melakukannya secara manual. Opsinya muncul di klik kanan-> source -> Generate Getter and Setter.
sumber
Ini berarti Anda memetakan kolom dua kali di kelas entitas Anda. Menjelaskan dengan contoh ...
Larutan
Karena pemetaan adalah bagian penting, Anda tidak ingin menghapusnya. Sebaliknya, Anda akan menghapus
Ini berhasil 100%. Saya telah menguji ini dengan database Postgres dan Oracle.
sumber
Kami telah menyelesaikan ketergantungan melingkar (Entitas Induk-anak) dengan memetakan entitas anak alih-alih entitas induk di Grails 4 (GORM).
Contoh:
sumber