Программисты JAVA общаются здесь
Anonymous
SemanticException: элемент выбора в позиции 1 в списке выбора не имеет псевдонима при использовании подвыбора JPQL
Сообщение
Anonymous » 01 июл 2024, 22:17
Данные сущности:
Код: Выделить всё
@Entity
@Data
public class Collection {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String createdBy;
@OneToMany(mappedBy = "collection")
private List collectionAccesses;
}
@Entity
@Data
public class CollectionAccess {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(
foreignKey =
@ForeignKey(
value = ConstraintMode.PROVIDER_DEFAULT,
name = "fk_collectionaccess_collection_collections_id"))
private Collection collection;
private Integer accessType;
private LocalDateTime expirationAtUtc;
}
Данная база данных:
Код: Выделить всё
select id, created_by from collection;
+----+------------+
| id | created_by |
+----+------------+
| 40 | ABC123 |
+----+------------+
select * from collection_access;
+----+-------------+----------------------------+---------------+
| id | access_type | expiration_at_utc | collection_id |
+----+-------------+----------------------------+---------------+
| 2 | 0 | 2011-12-03 03:15:30.000000 | 40 |
| 3 | 1 | 2011-12-03 03:15:30.000000 | 40 |
+----+-------------+----------------------------+---------------+
Написание этого запроса вызывает SemanticException:
Код: Выделить всё
em.createQuery(
"SELECT t FROM (SELECT c FROM Collection c "
+ "LEFT JOIN c.collectionAccesses ca WHERE c.id = ?1 "
+ "AND (c.createdBy = ?2 OR (ca.accessType = ?3 AND ca.expirationAtUtc
Подробнее здесь: [url]https://stackoverflow.com/questions/78676896/semanticexception-select-item-at-position-1-in-select-list-has-no-alias-when-us[/url]
1719861458
Anonymous
Данные сущности: [code]@Entity @Data public class Collection { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String createdBy; @OneToMany(mappedBy = "collection") private List collectionAccesses; } @Entity @Data public class CollectionAccess { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne @JoinColumn( foreignKey = @ForeignKey( value = ConstraintMode.PROVIDER_DEFAULT, name = "fk_collectionaccess_collection_collections_id")) private Collection collection; private Integer accessType; private LocalDateTime expirationAtUtc; } [/code] Данная база данных: [code]select id, created_by from collection; +----+------------+ | id | created_by | +----+------------+ | 40 | ABC123 | +----+------------+ select * from collection_access; +----+-------------+----------------------------+---------------+ | id | access_type | expiration_at_utc | collection_id | +----+-------------+----------------------------+---------------+ | 2 | 0 | 2011-12-03 03:15:30.000000 | 40 | | 3 | 1 | 2011-12-03 03:15:30.000000 | 40 | +----+-------------+----------------------------+---------------+ [/code] Написание этого запроса вызывает SemanticException: [code]em.createQuery( "SELECT t FROM (SELECT c FROM Collection c " + "LEFT JOIN c.collectionAccesses ca WHERE c.id = ?1 " + "AND (c.createdBy = ?2 OR (ca.accessType = ?3 AND ca.expirationAtUtc Подробнее здесь: [url]https://stackoverflow.com/questions/78676896/semanticexception-select-item-at-position-1-in-select-list-has-no-alias-when-us[/url]