小编Sim*_*mon的帖子

ModelMapper:选择基于Child类的映射

TL; DR

我希望以一种从AbstractParent映射到AbstractParentDTO的方式使用modelMapper,稍后在ModelMapper-Config中调用每个Sub-class的特定映射器,然后跳过其余的(abstrac-class)映射.

怎么可能?这是正确的方法吗?有设计缺陷吗?


是)我有的:

父实体:

@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "type")
public abstract class Parent {
//some more fields
}
Run Code Online (Sandbox Code Playgroud)

一个子实体:

//Basic Lombok Annotations
@DiscriminatorValue("child_a")
public class ChildA extends Parent {
//some more fields
}
Run Code Online (Sandbox Code Playgroud)

另一个子实体:

@DiscriminatorValue("child_b")
public class ChildB extends Parent {
//some more fields   
}
Run Code Online (Sandbox Code Playgroud)

然后我有父DTO类:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonSubTypes({
@JsonSubTypes.Type(value = ChildA.class, name = "child_a"),
@JsonSubTypes.Type(value = ChildB.class, name = "child_b"),
public abstract class ParentDTO {
//some more fields
}
Run Code Online (Sandbox Code Playgroud)

一个孩子DTO:

public class ClassADTO extends ParentDTO …
Run Code Online (Sandbox Code Playgroud)

java spring modelmapper spring-boot

9
推荐指数
2
解决办法
2684
查看次数

如何清理房间数据库?

我如何RoomDatabase为我的应用程序进行 VACUUM?我围绕 Room 构建整个应用程序,在某个时刻,一张大表会定期删除,然后再次填充。

我尝试使用查询创建一个额外的 DAO 接口:

@Dao
public interface GenericDao {
    @Query("VACUUM")
    void vacuum();
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

Error:(13, 10) error: UNKNOWN query type is not supported yet. You can use:SELECT, UPDATE, DELETE
Run Code Online (Sandbox Code Playgroud)

有解决方法吗?

基本上我需要的是,一旦我的表完全清空,自动增量就会再次从 1 开始。

我对数据库设计相当陌生,所以请理解这是否违反最佳实践。是的:我用尽了谷歌和我所知道的所有其他平台。

提前谢谢了!

performance android android-room

4
推荐指数
1
解决办法
1774
查看次数

Typo3 Fluid:如果是第一个,则将类添加到元素

我正在使用Fluid将Contentelments送入扩展:

<f:for each="{field.children}" as="myObj" iteration="iterator">
  {myObj.render -> f:format.raw()}
</f:for>
Run Code Online (Sandbox Code Playgroud)

这工作正常.

元素看起来像这样:

<div class="childElement">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
Run Code Online (Sandbox Code Playgroud)

然后以某种方式显示元素.

现在我希望第一个Element一个名为" first "的额外类.然后第一个元素看起来像这样:

<div class="childElement first">
  <h1>I'm a Caption!</h1>
  <p>I'm some text.....</p>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试使用迭代器解决这个问题,并简单地检查迭代器是否"isfirst".像这样的东西:

<f:for each="{field.children}" as="myObj" iteration="iteration">
 <f:if condition="iteration.isFirst">
    <f:then>
     ...
Run Code Online (Sandbox Code Playgroud)

但是我仍然需要插入课程,无论如何感觉必须有更好的方法来解决它.

有人可能会指出我正确的方向吗?


编辑(解决方案):

在我做"<div class="childElement">"了扩展而不是在Child中进行了包装后,接受的答案对我有用.我的解决方案现在看起来像这样

<f:for each="{field.children}" as="myObj" iteration="iterator">
  <div class="childElement {f:if(condition:iterator.isFirst, then: ' first')}">
     {childDce.render -> f:format.raw()}
   </div>
</f:for>
Run Code Online (Sandbox Code Playgroud)

typo3 fluid

1
推荐指数
1
解决办法
1526
查看次数