我在标识符生成方面遇到了一些问题。我使用MySQL数据库。所以,我有两个实体:
@Entity
@Table(name = "users", catalog = "test1")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", unique=true, nullable=false, updatable=false)
private Long id;
private String username;
private String password;
private boolean enabled;
@JsonBackReference
private Set<UserRole> userRole = new HashSet<UserRole>(0);
@OneToOne(cascade={CascadeType.ALL}, fetch = FetchType.LAZY, targetEntity = Utilisateur.class)
@JoinColumn(name="userUtilisateur")
@JsonManagedReference
private Utilisateur userUtilisateur;
/*.. getters and setters..*/ }
和
@Entity
@Table(name="utilisateur")
public class Utilisateur {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
private String fullName;
@Column(name = "age")
private int age;
@OneToMany(mappedBy="utilisateur", targetEntity = Ticket.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JsonBackReference
private Set<Ticket> tickets = new HashSet<Ticket>(0);
@OneToMany(mappedBy="utilisateur", targetEntity=UserAssignProject.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JsonBackReference
private Set<UserAssignProject> userAssignProjects = new HashSet<UserAssignProject>(0);
@OneToMany(mappedBy="utilisateur", targetEntity=Message.class, cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JsonBackReference
private Set<Message> messages = new HashSet<Message>(0);
/*.. getters and setters..*/ }
我在UserDaoImpl中有这个方法:
public void save(User user) {
Utilisateur utilisateur = new Utilisateur();
user.setId(user.getId());
user.setUsername(user.getUsername());
user.setPassword(user.getPassword());
user.setEnabled(true);
user.setUserUtilisateur(utilisateur);
getCurrentSession().save(user);
}
结果: Exception here
我尝试过使用序列,GenerationType.AUTO ......,但它不起作用。
任何解决方案? 谢谢你的关注!