下面列出了怎么用javax.persistence.TupleElement的API类实例代码及写法,或者点击链接到github查看源代码。
public Object get(String alias) {
int index = -1;
if ( alias != null ) {
alias = alias.trim();
if ( alias.length() > 0 ) {
int i = 0;
for ( TupleElement selection : (List<TupleElement>) tupleElements ) {
if ( alias.equals( selection.getAlias() ) ) {
index = i;
break;
}
i++;
}
}
}
if ( index < 0 ) {
throw new IllegalArgumentException(
"Given alias [" + alias + "] did not correspond to an element in the result tuple"
);
}
// index should be "in range" by nature of size check in ctor
return tuples[index];
}
@Override
public Object convert(Object source) {
if (!(source instanceof Tuple)) {
return source;
}
Tuple tuple = (Tuple) source;
List<TupleElement<?>> elements = tuple.getElements();
if (elements.size() == 1) {
Object value = tuple.get(elements.get(0));
if (type.isInstance(value) || value == null) {
return value;
}
}
return new TupleConverter.TupleBackedMap(tuple);
}
@Override
public Object convert(Object source) {
if (!(source instanceof Tuple)) {
return source;
}
Tuple tuple = (Tuple) source;
List<TupleElement<?>> elements = tuple.getElements();
if (elements.size() == 1) {
Object value = tuple.get(elements.get(0));
if (type.isInstance(value) || value == null) {
return value;
}
}
return new TupleBackedMap(tuple);
}
@Override
public <X> X get(TupleElement<X> tupleElement) {
if ( HqlTupleElementImpl.class.isInstance( tupleElement ) ) {
return get( ( (HqlTupleElementImpl) tupleElement ).getPosition(), tupleElement.getJavaType() );
}
else {
return get( tupleElement.getAlias(), tupleElement.getJavaType() );
}
}
@Override
public List<TupleElement<?>> getElements() {
List<TupleElement<?>> elements = new ArrayList<>( aliasToValue.size() );
for ( Map.Entry<String, Object> entry : aliasToValue.entrySet() ) {
elements.add( new NativeTupleElementImpl<>( getValueClass( entry.getValue() ), entry.getKey() ) );
}
return elements;
}
public <X> X get(TupleElement<X> tupleElement) {
int index = tupleElements.indexOf( tupleElement );
if ( index < 0 ) {
throw new IllegalArgumentException(
"Requested tuple element did not correspond to element in the result tuple"
);
}
// index should be "in range" by nature of size check in ctor
return (X) tuples[index];
}
@Override
public Set<String> keySet() {
return tuple.getElements().stream() //
.map(TupleElement::getAlias) //
.collect(Collectors.toSet());
}
@Override
public Set<String> keySet() {
return tuple.getElements().stream() //
.map(TupleElement::getAlias) //
.collect(Collectors.toSet());
}
@Override
public <X> X get(TupleElement<X> element) {
throw new UnsupportedOperationException();
}
@Override
public List<TupleElement<?>> getElements() {
throw new UnsupportedOperationException();
}
@Override
public <X> X get(TupleElement<X> tupleElement) {
throw new UnsupportedOperationException("not implemented");
}
@Override
public List<TupleElement<?>> getElements() {
throw new UnsupportedOperationException("not implemented");
}
@Test(expected = UnsupportedOperationException.class)
public void testGetByTupleNotSupported() {
impl.get((TupleElement<?>) null);
}
@Override
public List<TupleElement<?>> getElements() {
return tupleElements;
}
@Override
public <X> X get(TupleElement<X> tupleElement) {
return get( tupleElement.getAlias(), tupleElement.getJavaType() );
}
public List<TupleElement<?>> getElements() {
return tupleElements;
}
@Override
public <X> X get(TupleElement<X> element) {
throw new UnsupportedOperationException();
}
@Override
public List<TupleElement<?>> getElements() {
throw new UnsupportedOperationException();
}
@Override
public <X> X get(TupleElement<X> tupleElement) {
throw new UnsupportedOperationException("not implemented");
}
@Override
public List<TupleElement<?>> getElements() {
throw new UnsupportedOperationException("not implemented");
}
@Test(expected = UnsupportedOperationException.class)
public void testGetByTupleNotSupported() {
impl.get((TupleElement<?>) null);
}