Tôi cần phải định cấu hình ngủ đông để tránh tạo hàng trùng lặp, (mặc dù hàng tồn tại nó tạo ra một hàng mới, và vì chỉ có một tệp được đặt nó đặt tất cả phần còn lại thành NULL)Làm cách nào để tránh tạo hàng mới nếu hàng tương tự tồn tại?
Cho phép nói rằng tôi có một hàng sau
id des index age
1 MyName 2 23
Mặc dù tôi chỉ cần đặt Myname như des và nó đã tồn tại trong bảng Tên ngủ đông tạo một hàng mới như sau
id des index age
1 MyName 2 23
2 MyName Null Null << new row with null values will be created
rather than updating the previous one
Khi tôi muốn sa . Vì vậy, tôi đã thêm chú thích sau vào lớp học của mình nhưng nó đã vượt qua thực thể và dynamicUpdate.
@org.hibernate.annotations.Entity(
dynamicUpdate = true
)
Tôi cũng sử dụng @DynamicUpdate
, mặc dù ngủ đông chấp nhận nhưng tôi vẫn gặp vấn đề tương tự.
Có phương pháp nào khác để làm điều đó không? Phiên bản của chế độ ngủ đông của tôi là như sau
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.1.Final</version>
<type>jar</type>
</dependency>
* Dựa trên nhận xét của Ray thổi, Bằng cách chỉ định một giá trị cho Id của lớp trẻ nó hoạt động đúng nhưng làm thế nào về nếu tôi không có ID? tôi có phải chọn lựa để tìm id trước không? Có phương pháp nào để buộc hibernate làm điều đó tự động r dựa trên giá trị của rahter lớp con hơn làm một lựa chọn riêng biệt để tìm id? *
User.Java
....
import org.hibernate.annotations.DynamicUpdate;
@Entity
@Table(name = "user")
@DynamicUpdate
public class User implements Serializable {
private int ID;
private Name name;
private String type;
public User() {
}
@Id
@GeneratedValue
@Column(name = "id")
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
@ManyToOne(cascade = CascadeType.ALL)
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
.....
Name.Java
@Entity()
@Table(name = "Name")
public class Name implements Serializable {
private int id;
private String des;
private String index;
private String age;
public Name() {
}
@Id
@GeneratedValue
@Column(name="id", unique= true, nullable = false)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
.....
Model.java
public void addMyUsers(){
Name name = new Name();
name.setDes("MyName");
While(.....)
{
User user = new User();
user.setName(name);
user.setType(X);
addUser(user);
}
}
public void addUser(User user) {
session = Util.getSession();
session.beginTransaction();
session.merge(user);
//session.saveOrUpdate(user);
session.getTransaction().commit();
session.close();
}
Xem http://stackoverflow.com/q/8935975/1700321. –
@AleksandrM cảm ơn tôi đã đọc rằng trước khi điều đó không đưa ra giải pháp vừa đề cập rằng các thẻ này không còn được dùng nữa. –
Có thể bạn cũng cần đọc câu trả lời của câu hỏi đó. –