相关疑难解决方法(0)

没有约束异常处理的Hibernate线程安全幂等upsert?

我有一些执行UPSERT的代码,也称为Merge。我想清理这段代码,具体地说,我想摆脱异常处理,并为这种简单的操作降低代码的整体冗长性和纯粹的复杂性。要求是插入每个项目,除非它已经存在:

public void batchInsert(IncomingItem[] items) {
    try(Session session = sessionFactory.openSession()) {
        batchInsert(session, items);
    }
    catch(PersistenceException e) {
        if(e.getCause() instanceof ConstraintViolationException) {
            logger.warn("attempting to recover from constraint violation");
            DateTimeFormatter dbFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
            items = Arrays.stream(items).filter(item -> {
                int n = db.queryForObject("select count(*) from rets where source = ? and systemid = ? and updtdate = ?::timestamp",
                        Integer.class,
                        item.getSource().name(), item.getSystemID(), 
                        dbFormat.format(item.getUpdtDateObj()));
                if(n != 0) {
                    logger.warn("REMOVED DUPLICATE: " +
                            item.getSource() + " " + item.getSystemID() + " " + …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

6
推荐指数
2
解决办法
327
查看次数

Hibernate复合键id生成器

我有我的实体如下.我的数据模型在下面执行,我无法更改参照迭代.所以我坚持使用复合键.我想为orderId自动生成/使用一些生成器

是的我已在下面阅读. http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#entity-mapping-identifier

我不想管理id生成过程,因为上面建议应用程序生成orderId.

如何使部分id生成器工作..我的选择是什么...将非常感谢专家的一些想法.

@Entity
@Table(name = "Orders", uniqueConstraints = @UniqueConstraint(columnNames = {"partner_ID", "order_ident" }))
public class Order  {

private OrderId id;

public Order() {
}


@EmbeddedId
@AttributeOverrides({
        @AttributeOverride(name = "partnerId", column = @Column(name = "partner_ID", nullable = false)),
        @AttributeOverride(name = "employeeId", column = @Column(name = "employee_ID", nullable = false)),
        @AttributeOverride(name = "orderId", column = @Column(name = "order_ID", nullable = false)) })
public OrderId getId() {
    return this.id;
}

public void setId(OrderId id) {
    this.id = id;
}


} …
Run Code Online (Sandbox Code Playgroud)

hibernate

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

hibernate ×2

java ×1

jpa ×1