Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

JPQL constructor expression in select with enum

1001541Apr 7 2013 — edited Apr 9 2013
Hi Everyone:

I am using Spring Framwork with Hibernate/JPA to write a HQL query. My problem is with my enum FeedType (Using the first constructor from FEED -> first parameter is a FeedType), I get an error that says: unexpected end of subtree and it points to the query shown below. When I choose the second constructor from the domain, everything works perfectly. Any suggestion is appreciated. My query is below:


@Query("SELECT new YesIHaveMyPackageNameHere.Feed(YesIHaveMyPackageNameHere.FeedType.SLEEP, se.startDate,'sleeptracker', cast(sum(se.minutesAsleep) as big_decimal), '','asleep',p) FROM Person p JOIN p.sleepProfile sp JOIN sp.sleepEpisodes se WHERE p.id = :userId order by se.startDate desc group by se.startDate")
public List<Feed> getFeedFromSleep(@Param("userId") Long userId, Pageable page);


*//My Domain:*

@Entity
@Table(name="Feed")
@Audited
public class Feed {


public Feed(FeedType type, Date date, String link, BigDecimal value,
String app, String unitType, Person person) {
super();
this.type = type;
this.date = date;
this.link = link;
this.value = value;
this.app = app;
this.unitType = unitType;
this.person = person;
}

public Feed(Date date, String link, BigDecimal value,
String app, String unitType, Person person) {
super();
this.date = date;
this.link = link;
this.value = value;
this.app = app;
this.unitType = unitType;
this.person = person;
}

public Feed()
{

}

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="Id")
private Long id;

@Column(name="type")
@Enumerated(EnumType.STRING)
private FeedType type;

@Column(name="date")
private Date date;

@Column(name="link")
private String link;

@Column(name="value")
private BigDecimal value;

@Column(name="app")
private String app;

@Column(name="unitType")
private String unitType;

@ManyToOne
private Person person;

public BigDecimal getValue() {
return value;
}

public void setValue(BigDecimal value) {
this.value = value;
}

public String getUnitType() {
return unitType;
}

public void setUnitType(String unitType) {
this.unitType = unitType;
}

public String getApp() {
return app;
}

public void setApp(String app) {
this.app = app;
}

public FeedType getType() {
return type;
}

public void setType(FeedType type) {
this.type = type;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}


public String getLink() {
return link;
}

public void setLink(String link) {
this.link = link;
}

public Person getPerson() {
return person;
}

public void setPerson(Person person) {
this.person = person;
}

}

*//Enum*

public enum FeedType {

SLEEP("sleep"),
FITNESS("fitness"),
NUTRITION("nutrition");

private FeedType(String name) {
this.name = name;
}

private final String name;

public String toString() {
return name;
}

public String getName(){
return this.name;
}

}

Edited by: 998538 on Apr 7, 2013 9:49 AM
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 7 2013
Added on Apr 7 2013
1 comment
2,622 views