一尘不染

如何将触发器生成的值赋予Hibernate ValueObject?

hibernate

在我的Hibernate应用程序中,我正在使用创建ValueObject类

@Entity
@Table(name="user")
public class UserVO{

    @Id
    @Column(name="S_ID")
    private String s_id;

    @Column(name="FIRSTNAME")
    private String firstName;

    @Column(name="LASTNAME")
    private String lastName;
 }

在我的服务课上,我这样写

public void createOrUpdateUser(UserVO userVO) {
        userDAO.createOrUpdateUser(userVO);
    }

在我的DAO课上,我这样写

private EntityManager entityManager;
public void createOrUpdateUser(UserVO userVO) throws DataAccessException {
        entityManager.persist(userVO);
    }

现在我打电话给createOrUpdateUser(userVO)但它给错误

Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()

实际上我的数据库我已经triggeruser表创建了一个数据库,以为s_id列生成唯一的ID 是它们的触发器问题。请建议我。


阅读 236

收藏
2020-06-20

共1个答案

一尘不染

ID列不能为null,无论您在数据库驱动程序中执行什么操作,都只会在插入或任何其他操作之前/之后被触发,但是根据错误,它会在出现任何错误之前给出错误。

设置一些ID值或尝试一些操作 @GeneratedValue(strategy = GenerationType.IDENTITY)

2020-06-20