2016-01-22 49 views
0

我对许多查询有一些问题。这是我的数据库 many to many使用Spring数据找到许多额外的关系属性

的一部分,这是我的关系类的代码:

@Entity 
@Table(name = "notification_has_user", catalog = "ats") 
@AssociationOverrides({ 
    @AssociationOverride(name = "pk.user", 
     joinColumns = @JoinColumn(name = "id_username")), 
    @AssociationOverride(name = "pk.notification", 
     joinColumns = @JoinColumn(name = "id_notification")) }) 
public class NotificationHasUser implements java.io.Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 
    private NotificationHasUserKeys pk = new NotificationHasUserKeys(); 
    private boolean isRead; 

    @EmbeddedId 
    public NotificationHasUserKeys getPk() { 
     return pk; 
    } 

    /** 
    * @param pk the pk to set 
    */ 
    public void setPk(NotificationHasUserKeys pk) { 
     this.pk = pk; 
    } 

    @Transient 
    public User getUser() { 
     return getPk().getUser(); 
    } 

    public void setStock(User user) { 
     getPk().setUser(user); 
    } 

    @Transient 
    public Notification getNotification() { 
     return getPk().getNotification(); 
    } 

    public void setCategory(Notification notification) { 
     getPk().setNotification(notification); 
    } 

    @Column(name = "isRead", nullable = false) 
    @Type(type = "org.hibernate.type.NumericBooleanType") 
    public boolean isRead() { 
     return isRead; 
    } 

    /** 
    * @param isRead the isRead to set 
    */ 
    public void setRead(boolean isRead) { 
     this.isRead = isRead; 
    } 
..equal and hash code 
} 

现在,我需要找回所有的未读消息列表中,因此所有与现场通知isRead = 0 。 我与春天帖前查询试图

List<Notification> findByPkUserAndIsReadFalse(Useruser); 

,也有这样的:

@Query("SELECT c FROM NotificationHasUser c WHERE c.pk.user = ?1 AND c.isRead=false") 

但是场isRead给我的问题,但此错误:

Caused by: java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [isRead] on this ManagedType [com.domain.NotificationHasUser] 
    at org.hibernate.jpa.internal.metamodel.AbstractManagedType.checkNotNull(AbstractManagedType.java:144) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] 
    at org.hibernate.jpa.internal.metamodel.AbstractManagedType.getAttribute(AbstractManagedType.java:130) ~[hibernate-entitymanager-4.3.11.Final.jar:4.3.11.Final] 
    at org.springframework.data.jpa.repository.query.QueryUtils.toExpressionRecursively(QueryUtils.java:475) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:199) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:146) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.and(JpaQueryCreator.java:96) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.and(JpaQueryCreator.java:44) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:109) ~[spring-data-commons-1.9.4.RELEASE.jar:na] 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:88) ~[spring-data-commons-1.9.4.RELEASE.jar:na] 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:73) ~[spring-data-commons-1.9.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.<init>(PartTreeJpaQuery.java:110) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$CountQueryPreparer.<init>(PartTreeJpaQuery.java:230) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:64) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:94) ~[spring-data-jpa-1.7.4.RELEASE.jar:na] 
    ... 56 common frames omitted 

你能解释一下我哪里是错误的?

+0

我犯了一个错误的名称isRead方法,它必须是getIsRead和setIsRead – luca

回答

1

boolean字段重命名为read,并使用isReadsetRead作为getter和setter,这样它更与Java Beans规范一致。

+0

是的我评论我的帖子与错误,但我等待测试该方法,并知道它是否工作之前接受 – luca

相关问题