- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用继承的学说实体:
/**
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"video" = "Video", "text" = "Text", "image" = "Image" })
* @ORM\Table(name="item_block_content")
* @ORM\HasLifecycleCallbacks
*
* @Serializer\Discriminator(field = "discr", map = {
* "text": "Namespace\To\Entity\Text",
* "video": "Namespace\To\Entity\Video",
* "image": "Namespace\To\Entity\Image"
* })
*/
class Content implements interfaces\Response {
...
}
我还有一个包含内容实体集合的项目实体。当我使用 JMSSerializer 将这些实体序列化为 XML 时,我确实看到了一个 discr 列。
<id />
<metadata />
<metadata_technical />
<created>2013-07-01T11:59:50+02:00</created>
<modified>2013-07-01T12:35:51+02:00</modified>
<title>Some title</title>
<text>Some text</text>
<discr>text</discr>
当我想要反序列化 XML 时,我得到了预期的结果(内容类除外)。它们都是\Namespace\To\Entity\Content 对象。这样我就无法将更改保存到数据库。
在上面的代码示例中,我已经尝试过使用 @Discriminator 注释来指定实体类型,但这不起作用。知道如何让它发挥作用吗?我想我已经很接近了,但我没有想法。
编辑
如果我在父类中进行以下更改:
/**
* @ORM\OneToMany(targetEntity="Namespace\To\Entity\Content", mappedBy="Block", cascade={"persist"})
*
* @Type("ArrayCollection<Namespace\To\Entity\Content>")
*/
到
/**
* @ORM\OneToMany(targetEntity="Namespace\To\Entity\Content", mappedBy="Block", cascade={"persist"})
*
* @Type("ArrayCollection<Namespace\To\Entity\Text>")
*/
我只添加 Text 元素,它可以正常工作,但添加其他元素(当然)会中断。
最佳答案
查看BaseSerializationTest和夹具Vehicle ... @Discriminator
应该完全符合您想要实现的目标。
您反序列化对象的方式一定有问题。正确应用了映射吗?否Exlusion Strategy或Groups涉及?
关于symfony - JMS 序列化器通过继承反序列化学说实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17551959/
这个问题已经有答案了: Is storing a delimited list in a database column really that bad? (10 个回答) 已关闭 3 年前。 我有一
我想创建一个在圆圈周围放置点的插画脚本。 假设给定了壳,但我需要一种方法在 n 大小的圆上均匀分布 n 个点(电子)。例如第一个圆上有 2 个点,第二个圆上有 8 个点,等等。 Here is an
我必须设计一个数据库来存储化学 react 的数据。我有 3 个实体:化学、 react 和条件。 我还设计了ER图。但它似乎并不完美。请指出以下ER图的缺陷和改进建议。 最佳答案 react 和条件
我正在实现一个基于线程的应用程序,我将连续连接到 Alfresco。我想避免 session 超时错误,所以想知道我应该以什么时间间隔清除 session 或创建新 session 。我可以继续与我进
我有一项从 Lotus Notes 连接到 SharePoint 2010 并上传 pdf 文档的服务。 我注意到,当运行约 14 000 个文档的较大作业时,每 5 - 10 分钟就会抛出一次“未经
我是一名优秀的程序员,十分优秀!