使用Servlet在Web应用程序中实现 Hibernate Many to Many 关联时遇到问题。
我的 POJO 类在Set
中有类类型变量。
@Entity
@Table(name = "buku")
public class Buku {
@Id
@GeneratedValue
@Column(name = "uid")
private long id;
@Column(length = 150)
private String judul;
@Column(name = "tgl_terbit")
private Date tglTerbit;
@Column(length = 150)
private String penerbit;
@ManyToMany(mappedBy = "bukus")
private Set<Kategori> kategories;
public Buku() {
super();
// TODO Auto-generated constructor stub
}
public Buku(String judul, Date tglTerbit, String penerbit,
Set<Kategori> kategories) {
super();
this.judul = judul;
this.tglTerbit = tglTerbit;
this.penerbit = penerbit;
this.kategories = kategories;
}
// Getter and Setter
这是另一个班级
@Entity
@Table(name = "kategori")
public class Kategori {
@Id
@GeneratedValue
@Column(name = "uid")
private long id;
private String namaKategori;
private String deskripsi;
@ManyToMany
@JoinTable(name = "kategori_buku",
joinColumns = @JoinColumn(name = "kategori_id"),
inverseJoinColumns = @JoinColumn(name = "buku_id"))
private Set<Buku> bukus;
// Getter and Setter
我的组合框包含Kategori
个数据。
但是,在JSP文件中,组合框值只保留int
的{{1}}值。
我在我的Servlet中得到了这样的价值:
id_kategori
问题是,我需要将对象作为参数传递给我的DAO&amp;控制器。
...
int kategori = Integer.parseInt(request.getParameter("id_kategori"));
...
if (idBuku.equals("") || idBuku.isEmpty()) {
controller.save(judul, penerbit, tglTerbit, kategori);
} else {
// Do Update
}
...
这是我目前的控制器。
...
// DAO
@Override
public void insert(Buku b) {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(b);
session.getTransaction().commit();
}
...
我被困在我的控制器中。
我如何才能从...
public void save(String judul, String penerbit, Date tglTerbit, int idKategori) {
Buku b = new Buku();
b.setJudul(judul);
b.setPenerbit(penerbit);
b.setTglTerbit(tglTerbit);
// Select from kategori table
// I stuck in this. How i create object of kategori???
dao.insert(b);
}
...
创建 kategori 对象?如果我首先选择数据库并构建一个对象,那就太慢了。
谢谢。 ^^
答案 0 :(得分:0)
您无需从数据库中检索。
首先,您必须使您的实体Kubu
成为拥有方,并在Kategori实体中移动您的mappedBy
属性。
然后,您可以实例化一个新的Kategori
实例,只设置其id字段,当您插入时,Hibernate也会在连接表中保留。
...
Kategori kategori = new Kategori();
kategori.setId(idKategori);
b.setKategories(new HashSet<>());
b.getKategories().add(kategori);
...