具有一对多关系的 LookupField
LookupField with one-to-many relationship
我想在我的文档中显示一对多关系 - 一个带有值的简单下拉列表。为此,我尝试创建和配置 LookupField
component by using Cuba platform.
我有两个实体:
卡片项目:
@NamePattern("The document in the following state: %s|cardState")
@Table(name = "TKB_CARD_ITEM")
@Entity(name = "tkb$CardItem")
public class CardItem extends StandardEntity {
// skipped
卡片类型:
@NamePattern("CardType: %s, %s |cardTypeItem, cardTypeName")
@Table(name = "TKB_CARD_TYPE")
@Entity(name = "tkb$CardType")
public class CardType extends StandardEntity {
@OneToMany(targetEntity=CardItem.class )
private List<CardItem> cardItems;
// skipped
在我的 card-item-edit.xml
中,我有以下内容:
<dsContext>
<datasource id="CardItemDs" class="com.company.tkb.entity.CardItem" view="_local"/>
<collectionDatasource id="CardTypeDs" class="com.company.tkb.entity.CardType" view="_local">
<query>select c from tkb$CardType c</query>
</collectionDatasource>
</dsContext>
<layout>
<lookupField datasource="CardItemDs" property="cardTypeName" optionsDatasource="CardTypeDs"/>
我用一些值填充了 table TKB_CARD_TYPE
。现在,当我创建 CardItem 时,我试图获得一个包含值的下拉列表,但该列表是空的。
可能是什么问题?
如果能提供信息,我将不胜感激。感谢大家。
有什么帮助:
在CardItemEdit
class中我添加了以下内容:
public class CardItemEdit extends AbstractEditor<CardItem> {
@Inject
private Datasource<CardItem> cardItemDs;
@Inject
private Metadata metadata;
@Override
public void init(Map<String, Object> params) {
CardItem cardItem = metadata.create(CardItem.class);
cardItemDs.setItem(cardItem);
}
}
然后我改变了关系的方向:我的CardItem
实体的一部分:
@NamePattern("The document in the following state: %s|cardState")
@Table(name = "TKB_CARD_ITEM")
@Entity(name = "tkb$CardItem")
public class CardItem extends StandardEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CARD_TYPE_ID")
protected CardType cardType;
// skipped
我的 CardType
实体的一部分:
@NamePattern("Тип входящего документа: %s | cardTypeName")
@Table(name = "TKB_CARD_TYPE")
@Entity(name = "tkb$CardType")
public class CardType extends StandardEntity {
// skipped
我是这样定义dsContext
和lookupField
的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editCaption"
class="com.tkbbank.client.web.item.CardItemEdit"
datasource="cardItemDs"
focusComponent="fieldGroup"
messagesPack="com.tkbbank.client.web.item">
<dsContext>
<datasource id="cardItemDs" class="com.tkbbank.client.entity.CardItem" allowCommit="false"/>
<collectionDatasource id="cardTypeDs" class="com.tkbbank.client.entity.CardType" view="_local">
<query>
<![CDATA[select e from demo$CardType e]]>
</query>
</collectionDatasource>
</dsContext>
<dialogMode forceDialog="true" width="AUTO"/>
<layout expand="windowActions" spacing="true">
<fieldGroup id="fieldGroup" datasource="cardItemDs">
<column width="500px">
<field id="cardCreationDate" editable="false"/>
<field id="cardType" caption="Тип документа">
<lookupField datasource="cardItemDs" property="cardType" optionsDatasource="cardTypeDs"/>
</field>
<field id="cardSubtype"/>
<field id="cardAutoFill"/>
<field id="cardOutcomeNumber"/>
<field id="cardDate"/>
<field id="cardOrganization"/>
<field id="cardDeliveryMethod"/>
<field id="cardAdditionalInformation"/>
<field id="registratorName"/>
</column>
</fieldGroup>
<frame id="windowActions" screen="editWindowActions"/>
</layout>
</window>
我现在看到的。我的名片:
用数据填充 CardType 的接口:
查看所有文档的界面:
现在一切正常
附带:关于 "Can’t find getter for property" 异常的非常有用的问题(也出现了这个错误):
Hibernate - PropertyNotFoundException: Could not find a getter for
“ Could not find a getter for ” Error
What is the purpose of AccessType.FIELD, AccessType.PROPERTY and @Access
我想在我的文档中显示一对多关系 - 一个带有值的简单下拉列表。为此,我尝试创建和配置 LookupField
component by using Cuba platform.
我有两个实体:
卡片项目:
@NamePattern("The document in the following state: %s|cardState")
@Table(name = "TKB_CARD_ITEM")
@Entity(name = "tkb$CardItem")
public class CardItem extends StandardEntity {
// skipped
卡片类型:
@NamePattern("CardType: %s, %s |cardTypeItem, cardTypeName")
@Table(name = "TKB_CARD_TYPE")
@Entity(name = "tkb$CardType")
public class CardType extends StandardEntity {
@OneToMany(targetEntity=CardItem.class )
private List<CardItem> cardItems;
// skipped
在我的 card-item-edit.xml
中,我有以下内容:
<dsContext>
<datasource id="CardItemDs" class="com.company.tkb.entity.CardItem" view="_local"/>
<collectionDatasource id="CardTypeDs" class="com.company.tkb.entity.CardType" view="_local">
<query>select c from tkb$CardType c</query>
</collectionDatasource>
</dsContext>
<layout>
<lookupField datasource="CardItemDs" property="cardTypeName" optionsDatasource="CardTypeDs"/>
我用一些值填充了 table TKB_CARD_TYPE
。现在,当我创建 CardItem 时,我试图获得一个包含值的下拉列表,但该列表是空的。
可能是什么问题?
如果能提供信息,我将不胜感激。感谢大家。
有什么帮助:
在CardItemEdit
class中我添加了以下内容:
public class CardItemEdit extends AbstractEditor<CardItem> {
@Inject
private Datasource<CardItem> cardItemDs;
@Inject
private Metadata metadata;
@Override
public void init(Map<String, Object> params) {
CardItem cardItem = metadata.create(CardItem.class);
cardItemDs.setItem(cardItem);
}
}
然后我改变了关系的方向:我的CardItem
实体的一部分:
@NamePattern("The document in the following state: %s|cardState")
@Table(name = "TKB_CARD_ITEM")
@Entity(name = "tkb$CardItem")
public class CardItem extends StandardEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CARD_TYPE_ID")
protected CardType cardType;
// skipped
我的 CardType
实体的一部分:
@NamePattern("Тип входящего документа: %s | cardTypeName")
@Table(name = "TKB_CARD_TYPE")
@Entity(name = "tkb$CardType")
public class CardType extends StandardEntity {
// skipped
我是这样定义dsContext
和lookupField
的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editCaption"
class="com.tkbbank.client.web.item.CardItemEdit"
datasource="cardItemDs"
focusComponent="fieldGroup"
messagesPack="com.tkbbank.client.web.item">
<dsContext>
<datasource id="cardItemDs" class="com.tkbbank.client.entity.CardItem" allowCommit="false"/>
<collectionDatasource id="cardTypeDs" class="com.tkbbank.client.entity.CardType" view="_local">
<query>
<![CDATA[select e from demo$CardType e]]>
</query>
</collectionDatasource>
</dsContext>
<dialogMode forceDialog="true" width="AUTO"/>
<layout expand="windowActions" spacing="true">
<fieldGroup id="fieldGroup" datasource="cardItemDs">
<column width="500px">
<field id="cardCreationDate" editable="false"/>
<field id="cardType" caption="Тип документа">
<lookupField datasource="cardItemDs" property="cardType" optionsDatasource="cardTypeDs"/>
</field>
<field id="cardSubtype"/>
<field id="cardAutoFill"/>
<field id="cardOutcomeNumber"/>
<field id="cardDate"/>
<field id="cardOrganization"/>
<field id="cardDeliveryMethod"/>
<field id="cardAdditionalInformation"/>
<field id="registratorName"/>
</column>
</fieldGroup>
<frame id="windowActions" screen="editWindowActions"/>
</layout>
</window>
我现在看到的。我的名片:
用数据填充 CardType 的接口:
查看所有文档的界面:
现在一切正常
附带:关于 "Can’t find getter for property" 异常的非常有用的问题(也出现了这个错误):
Hibernate - PropertyNotFoundException: Could not find a getter for
“ Could not find a getter for ” Error
What is the purpose of AccessType.FIELD, AccessType.PROPERTY and @Access