isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andi Huber <ahu...@apache.org>
Subject Re: Apache ISIS - Store multiple selected values into Single column in database
Date Thu, 01 Feb 2018 08:11:06 GMT
Hi Roshan,

whenever I have such a use-case as you described (multiple values in one
column), I do the following ...

Split the the property (in your case the 'doorTypes') into 2 parts:

1) visible part as rendered by Isis (make this transient: @NotPersistent)

@NotPersistent
List<DoorType> getDoorTypes(){
// parse field 'doorTypesStringified' ...
}

void setDoorTypes(List<DoorType> doorType){
// update field 'doorTypesStringified' ...
}

// add support methods here ...


2) hidden part as persisted by JDO (exemplified with 'String', but you
can choose whatever you like)

@PropertyLayout(hidden=Where.EVERYWHERE)
@Getter @Setter @Column(allowsNull="true")
String doorTypesStringified;

Regards, Andi

On 2018/02/01 07:40:27, Roshan Vishwakarma <r...@celeritio.com> wrote:
> Hi,>
>
> I have an use case where I have to insert multiple values in a single>
> column.>
>
> For example:>
>
> 1. Door.java>
> public class Door implements Comparable<Door>{>
>
> @javax.jdo.annotations.Column(name="name" ,allowsNull = "true")>
> @Property(editing = Editing.ENABLED)>
> @Getter @Setter>
> private String name;>
>
> @javax.inject.Inject>
> @javax.jdo.annotations.Column(name="doortype", allowsNull="true")>
> @Getter @Setter>
> DoorType[] doorType;>
> }>
>
> 2. DoorMenu.java>
> @Action(domainEvent = CreateDomainEvent.class)>
> @ActionLayout(cssClassFa="fa-clock-o", named="Door")>
> @MemberOrder(sequence = "1")>
> public Door createDoor(>
> @Parameter(optionality = Optionality.OPTIONAL)>
> @ParameterLayout(named="Name") String name,>
> @Parameter(optionality = Optionality.OPTIONAL)>
> @ParameterLayout(named="Door Type") DoorType[] doorType){>
> return doorRepository.create(name, doorType);>
> }>
>
> 3. DoorRepository.java>
> public Door createDoor(>
> final String name,>
> final DoorType[] doorType){>
>
> final Door door = new Door();>
>
> door.setName(name);>
> door.setDoorType(doorType);>
>
> serviceRegistry.injectServicesInto(door);>
> repositoryService.persist(door);>
>
> return door;>
> }>
>
> 4. DoorType.java - This will contain name of the type of door>
>
> From the above example I have to insert multiple DoorType in single
column.>
> But when code is executed it does not create column "doortype".>
> I don't see error in the log.>
> Is this correct way of defining "DoorType[]"?>
> How we can achieve multiple values in single column. Which dataType is>
> considered here?>
>
>
> Regards,>
> Roshan>
>


Mime
View raw message