Java @弹簧内瞬态数据不';行不通
我有Java @弹簧内瞬态数据不';行不通,java,spring,hibernate,jpa,spring-data,Java,Spring,Hibernate,Jpa,Spring Data,我有结算实体 @Entity @Table(name = "settlement") public class Settlement { @ManyToOne @JoinColumn(name = "subscription_x_product_id") private ProductSubscription productSubscription; @Entity @Table(name = "subscriptionproduct") public class P
结算
实体
@Entity
@Table(name = "settlement")
public class Settlement {
@ManyToOne
@JoinColumn(name = "subscription_x_product_id")
private ProductSubscription productSubscription;
@Entity
@Table(name = "subscriptionproduct")
public class ProductSubscription {
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
@Entity
public class Product {
@Transient
private String enabled;
哪些与ProductSubscription
实体相关
@Entity
@Table(name = "settlement")
public class Settlement {
@ManyToOne
@JoinColumn(name = "subscription_x_product_id")
private ProductSubscription productSubscription;
@Entity
@Table(name = "subscriptionproduct")
public class ProductSubscription {
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
@Entity
public class Product {
@Transient
private String enabled;
与产品
实体相关
@Entity
@Table(name = "settlement")
public class Settlement {
@ManyToOne
@JoinColumn(name = "subscription_x_product_id")
private ProductSubscription productSubscription;
@Entity
@Table(name = "subscriptionproduct")
public class ProductSubscription {
@ManyToOne
@JoinColumn(name = "product_id")
private Product product;
@Entity
public class Product {
@Transient
private String enabled;
在产品
实体中,我启用了字段
,该字段用@org.springframework.data.annotation.Transient
注释。
我还有一个存储库
public interface SettlementRepository extends JpaRepository<Settlement, Integer>
公共接口结算存储扩展了JpaRepository
当我调用SettlementRepository.findAll()时代码>它给出异常原因:com.microsoft.sqlserver.jdbc.SQLServerException:无效的列名“enabled”。
从数据库加载enabled
字段时,我怎么能忽略它呢?我找到了解决方案,问题出在注释@org.springframework.data.Annotation.Transient
中,我一改它就可以了。你对enabled
的setter有什么注释吗?@Jens否我不知道,我在setter或getter上没有任何注释。我也有同样的问题,但我从@javax.persistence.Transient
开始就使用了@Transient
,但仍然没有成功。我保存实体并对返回的对象调用get方法,值被持久化。你找到别的东西了吗?谢谢。对于更多的读者,注释实际上是有效的,但是当我在@Transactional
测试中使用它时,spring存储库似乎没有更新对象(保存的对象和从存储库返回的对象具有相同的对象Id)。因此,该字段没有写入数据库,但存储库仍在返回它,即使我调用findOne并将其分配给一个新变量。仍然不知道如何修复它。@fabioresner您的enitty中有错误(对我来说,我的\@UniqueConstraint name错误),您必须在xml文件中定义如下查询:@fabioresner检查以下答案: