Выбирание объектов из списка Python, которые имеют определенные индексы

Возможно, это не самое элегантное решение, которое я мог бы в итоге найти, но оно решило мою проблему на данный момент.

Я создал генератор пользовательских последовательностей следующим образом:

public class CustomSequenceGenerator extends SequenceStyleGenerator implements Configurable {

    private String sequenceCallSyntax;

    @Override
    public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
        sequenceCallSyntax = "SELECT nextval('" + params.getProperty("sequence_name") + "')";
        super.configure(type, params, serviceRegistry);
    }

    @Override
    public Serializable generate(SessionImplementor s, Object obj) {
        Serializable id = s.getEntityPersister(null, obj).getClassMetadata().getIdentifier(obj, s);

        if (id != null && Integer.valueOf(id.toString()) > 0) {
            return id;
        } else {        
            Integer seqValue = ((Number) Session.class.cast(s)
                .createSQLQuery(sequenceCallSyntax)
                .uniqueResult()).intValue();
            return seqValue;
        }
    }


}

И моя сущность получилась так:

@Entity
@Table(name = "usuario", schema = "adm")
    @GenericGenerator(name = "CustomSequenceGenerator", 
        strategy = "<....my_package...>.CustomSequenceGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "adm.seq_usuario")
        })
public class UsuarioEntity implements java.io.Serializable {

    @Id
    @GeneratedValue(generator = "CustomSequenceGenerator", strategy = GenerationType.SEQUENCE)
    @Column(name = "id_usuario", unique = true, nullable = false)
    private int id;

    @Column(name = "name", length = 50)
    private String name;

    @Column(name = "active")
    private Boolean active;

    // getter and setter ommited
    ....
}

Таким образом, когда я сохраняю сущность с ID как ноль на В моем сервисе генератор возвращает nextval из моей последовательности, и если я устанавливаю идентификатор, который был задан центральным сервером, он корректно вставляется в мою таблицу.

Если есть более элегантное решение, пожалуйста, дайте мне знать, чтобы обновить этот ответ.

27
задан Ben 15 July 2012 в 03:26
поделиться

4 ответа

[main_list[x] for x in indexes]

Это возвратит список объектов, с помощью понимания списка.

88
ответ дан Matthew Schinckel 28 November 2019 в 04:10
поделиться
t = []
for i in indexes:
    t.append(main_list[i])
return t
4
ответ дан Yuval Adam 28 November 2019 в 04:10
поделиться

Я думаю, что решением A Yuval является довольно ясное и простое. Но если Вы на самом деле хотите одно понимание списка строки:

[e for i, e in enumerate(main_list) if i in indexes]
2
ответ дан 28 November 2019 в 04:10
поделиться
map(lambda x:main_list[x],indexes)
1
ответ дан Thor 28 November 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: