как написать запрос на соединение в спящем режиме - PullRequest
10 голосов
/ 04 июня 2009

Я создал два бина User и VirtualDomain со многими отношениями ко многим

@Entity
@Table(name = "tblUser")
public class User implements Serializable {
    private Long id;
    private String username;
    private Set<VirtualDomain> virtualdomainset;
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

@Column(name = "username", length = 50, nullable = false)
public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}
   @ManyToMany(targetEntity = VirtualDomain.class, cascade = {CascadeType.PERSIST},fetch=FetchType.EAGER)
    @JoinTable(name = "tblUserDomainRel", joinColumns = @JoinColumn(name = "userid"), inverseJoinColumns = @JoinColumn(name = "domainid"))
    public Set<VirtualDomain> getVirtualdomainset() {
        return virtualdomainset;
    }

    public void setVirtualdomainset(Set<VirtualDomain> virtualdomainset) {
        this.virtualdomainset = virtualdomainset;
    }

}

@Entity
@Table(name = "tblVirtualDomain")
public class VirtualDomain  {
    private Long id;
    private String domainname;
    private Set<User> userset;
@Id
@JoinColumn(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

@Column(name = "domain_name")
public String getDomainname() {
    return domainname;
}

public void setDomainname(String domainname) {
    this.domainname = domainname;
}
@ManyToMany(cascade = {CascadeType.ALL},fetch=FetchType.EAGER, mappedBy = "virtualdomainset", targetEntity = User.class)

public Set<User> getUserset() {
    return userset;
}

public void setUserset(Set<User> userset) {
    this.userset = userset;
}
}

как получить данные пользователя, такие как имя пользователя, связанные с конкретным доменом, через hibernate.

Ответы [ 2 ]

10 голосов
/ 04 июня 2009

Чтобы добавить к ответу gid, если по какой-то причине вам нужно срочно получить отношения entites, тогда синтаксис объединения будет иметь выборку объединения.

from VirtualDomain vd join fetch vd.usersset u 
   where vd.domainname = 'example.com' and u.username like 'foo%'
2 голосов
/ 04 июня 2009

Всегда отличная задача HQL без тестовой системы ... но здесь мы идем:

select u from VirtualDomain vd join User vd.usersset u 
       where vd.domainname = 'example.com' and u.username like 'foo%'

Дайте мне знать, как вы поживаете.

Один совет, который я часто делал перед покупкой Intellji, состоял в том, чтобы остановить приложение в отладчике и затем использовать немедленное окно для экспериментов с HQL.

Документация в спящем режиме о соединениях, на мой взгляд, всегда была немного загадочной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...