你能帮我解决这个问题吗?
以下是相关代码摘录:
帐户:
@Entity
@Table(name = "account")
public class Account {
private Long accountId;
private List<AccountAttribut> accountAttributes = new LinkedList<AccountAttribut>();
private Person person;
private Zielsystem zielsystem;
public Account() {
}
// ...
}
@Entity
@Table(name="account_attribut")
@AssociationOverrides({
@AssociationOverride(name="aa_pk.account", joinColumns = @JoinColumn(name="account_id")),
@AssociationOverride(name="aa_pk.attribut", joinColumns = @JoinColumn(name="attribut_id"))
})
public class AccountAttribut {}
private AccountAttributPk aa_pk = new AccountAttributPk();
@Column(name="wert")
private String wert;
@EmbeddedId
public AccountAttributPk getAa_pk() {
return aa_pk;
}
public void setAa_pk(AccountAttributPk aa_pk) {
this.aa_pk = aa_pk;
}
@Transient
public Account getAccount() {
return getAa_pk().getAccount();
}
public void setAccount(Account account) {
getAa_pk().setAccount(account);
}
@Transient
public Attribut getAttribut() {
return getAa_pk().getAttribut();
}
public void setAttribut(Attribut attribut) {
getAa_pk().setAttribut(attribut);
}
public String getWert() {
return wert;
}
public void setWert(String wert) {
this.wert = wert;
}
public boolean equals(Object o) {
if (this== o) return true;
if (o ==null|| getClass() != o.getClass()) return false;
AccountAttribut that = (AccountAttribut) o;
if (getAa_pk() !=null?!getAa_pk().equals(that.getAa_pk()) : that.getAa_pk() !=null) return false;
return true;
}
public int hashCode() {
return (getAa_pk() !=null? getAa_pk().hashCode() : 0);
}
}
@Embeddable
public class AccountAttributPk implements Serializable {
private static final long serialVersionUID = -1551814445010872872L;
private Account account;
private Attribut attribut;
@ManyToOne
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
@ManyToOne
public Attribut getAttribut() {
return attribut;
}
public void setAttribut(Attribut attribut) {
this.attribut = attribut;
}
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
AccountAttributPk that = (AccountAttributPk) o;
if (account != null ? !account.equals(that.account) : that.account != null)
return false;
if (attribut != null ? !attribut.equals(that.attribut)
: that.attribut != null)
return false;
return true;
}
public int hashCode() {
int result;
result = (account != null ? account.hashCode() : 0);
result = 31 * result + (attribut != null ? attribut.hashCode() : 0);
return result;
}
}
List<Account> queried_accounts = HibernateUtils.criteriaList(
session.createCriteria(Account.class).
createCriteria("accountAttributes").
createCriteria("aa_pk.attribut").
add(Restrictions.isNotNull("name"))
);
例外情况:
org.hibernate.exception.sqlgrammarexception:无法提取org.hibernate.exception.internal.sqlexceptiontypedelegate.convert(sqlexceptiontypedelegate.java:80)(org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:49)上的ResultSet
我尝试了以下几种解决方案:
List<Account> queried_accounts = HibernateUtils.criteriaList(
session.createCriteria(Account.class).
createCriteria("accountAttributes","accAttrAlias").
createCriteria("accAttrAlias.aa_pk","accAttrAAPKAlias").
createCriteria("accAttrAAPKAlias.attribut", "attrAlias").
add(Restrictions.isNotNull("attrAlias.name"))
);
Java错误日志:org.hibernate.QueryException:不能直接在组件上创建条件html" target="_blank">对象。创建一个拥有实体的条件,并使用一个带点的属性访问组件属性:AccountAttributes.aa_pk
List<Account> queried_accounts = HibernateUtils.criteriaList(
session.createCriteria(Account.class).
createCriteria("accountAttributes","accAttrAlias").
createCriteria("accAttrAlias.aa_pk.attribut", "attrAlias").
add(Restrictions.isNotNull("attrAlias.name"))
);
Java错误日志:org.hibernate.exception.sqlgrammarexception:无法提取ResultSet
Hibernate错误日志:“Hibernate:选择this_.account_id作为account_1_3_4_,this_.person_id作为person_i2_3_4_,this_.zielsystem_id作为zielsystem_3_3_4_,accattrali1_.account_id作为account_3_4__,accattrali1_.attribut_id作为attribut_2_4_0_,accattrali1_.attribut_id作为attribut_2_4_0_,accattrali1_.attribut_wert作为s2_.name不为null Feb 20 2014 11:25:11 PM org.hibernate.engine.jdbc.spi.sqlexceptionhelper logExceptions警告:SQL错误:1054,SqlState:42s22 Feb 20 2014 11:25:11 PM org.hibernate.engine.jdbc.spi.sqlexceptionhelper logExceptions错误:“WHERE子句”中的列“attralias2_.name”未知“
标准应该与以下变量类似
List<Account> queried_accounts = HibernateUtils.criteriaList(
session.createCriteria(Account.class).
createCriteria("accountAttribute","accAttrAlias").
createCriteria("accAttrAlias.ATTRIBUTE_VARIABLE_NAME", "attrAlias").
add(Restrictions.isNotNull("attrAlias.name"))
);
以下是标准
文档
更新
List<Account> queried_accounts = HibernateUtils.criteriaList(
session.createCriteria(Account.class).
createCriteria("accountAttribute","accAttrAlias").
createCriteria("accAttrAlias.aa_pk","accAttrAAPKAlias").
createCriteria("accAttrAAPKAlias.attribut", "attrAlias").
add(Restrictions.isNotNull("attrAlias.name"))
);
List<Account> queried_accounts = HibernateUtils.criteriaList(
session.createCriteria(Account.class).
createCriteria("accountAttribute","accAttrAlias").
createCriteria("accAttrAlias.aa_pk.attribut", "attrAlias").
add(Restrictions.isNotNull("attrAlias.name"))
);
问题内容: 所以我昨天问了这个问题,但是目标职位已经改变,问题有所不同: Hibernate /JPA元素集合具有多对多关系吗? 我想知道是否可以创建将对所需关系进行建模的实体,以便Hibernate在启动应用程序时创建我的架构。 关键是Join表实际上可以包含不链接到任何Elements的行。该结构表示基于“类型”和“值”对的元素分类,并输入到此特定应用程序之外的系统中。 我想做的是通过映射将我
subcompany.hbm.xml 子单位表 branch.java 指定表 我需要帮助编写条件查询使用提供的SQL。
主要内容:示例实际应用中,由于多对多的关系比较复杂,会增加理解和关联的复杂度,所以应用较少。MyBatis 没有实现多对多级联,推荐通过两个一对多级联替换多对多级联,以降低关系的复杂度,简化程序。 例如,一个订单可以有多种商品,一种商品可以对应多个订单,订单与商品就是多对多的级联关系。可以使用一个中间表(订单记录表)将多对多级联转换成两个一对多的关系。 示例 下面以订单和商品(实现“查询所有订单以及每个订单对应
我想管理与映射到联接表的实体的关系。因此我有3个实体类:、、。具有注释的和成员。 及其嵌入的密钥: 当我需要带有给定标记的帖子时,我希望使用以下查询: 整件事都在这里: https://github.com/riskop/jpa_hibernate_spring_boot_many_to_many_managed_on_join_table_problem
Hibernate5.2.10 查询DSL(jpa,apt)4.1.4 Spring Boot 1.5.6 Spring Data JPA(因此,使用存储库) 存储库扩展 选择以下meetupCampaign.id=x *meetupCampaign.ApprovalStatus=y的关联会议: *meetupCampaign.id=x *meetupCampaign.ApprovalStatus
有没有办法在没有显式连接的实体上编写条件查询?通过显式连接,我的意思是数据库中的两个表没有外键关系,但一些列需要从两个表中提取,因此在查询中需要连接。我知道具有join的查询可以用‘In’子句编写,而条件查询可以用‘In’条件编写。我已经写了这种情况下的HQL,但请告诉我如何编写这种情况下的标准查询。 先谢谢了