我使用单个表在Spring Data JPA和JPA类层次结构中遇到了奇怪的行为。基本上我有两个实体Vertrag和VertrieblerVertrag。 VertrieblerVertrag扩展了Vertrag。鉴别器值是< vertragsart'它是' KV'对于Vertrag和' VV'对于VertrieblerVertrag。不知怎的,我得到Vertrag类型的对象,其中鉴别器值被设置为' VV'! VertragService.getVertrag();
我做错了什么?
Vertrag.java
@javax.persistence.Entity
@Table(name = "buch__vertrag")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "vertragsart", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("KV")
public class Vertrag implements Serializable
{
/**
* z.B. Vyyyymmdd/kundenr
*
*/
@Id
@javax.persistence.Column(nullable = false, name = "vertragnr")
protected String vertragNr;
public List<Rechnung> rechnungErstellen(final Date von, final Date bis)
{
. . .
}
}
和VertrieblerVertrag.java
@javax.persistence.Entity
@DiscriminatorValue("VV")
public class VertrieblerVertrag extends Vertrag
{
@Override
public List<Rechnung> rechnungenAusstellen()
{
throw new UnsupportedOperationException();
}
}
VertragRepo.java
public interface VertragRepo extends YBRepository<Vertrag, String>
{
}
YBRepository.java
@NoRepositoryBean
public interface YBRepository<T,PK extends Serializable> extends PagingAndSortingRepository<T, PK>, JpaSpecificationExecutor
{
}
和提取电话
@Service
public class VertragService implements IVertragService
{
@Autowired
private VertragRepo vertragRepo;
@Override
public Vertrag getVertrag()
{
final Vertrag findOne = this.vertragRepo.findOne("V20141801/10001");
return findOne;
}
}
insert.sql
INSERT INTO `buch__vertrag` (`vertragnr`,vertragsart) VALUES ('V20141801/10001', 'VV');
答案 0 :(得分:0)
我已经解决了。 我的错。
我忘了插入子类&#34; VertrieblerVertrag&#34;在persistence.xml中