我試圖做一個LEFT JOIN FETCH來加載一個懶人加載的一些資料,但我得到了以下錯誤。
org.postgresql.util.PSQLException: ERROR: operator does not exist: bigint = character varying
提示:No運算子匹配給定名稱和引數型別。你可能需要來添加明確的型別轉換。
位置。726。
我在網上到處搜索,想知道我做錯了什么,但我沒有看到我做了什么不同的事情(除了我的id不是一個原始型別)。
以下是我的情況
@Entity
@Setter
@Getter
@Table(name = "foo_definition"/span>)
public class FooDefinition implements Serializable {
@EmbeddedId[/span
private FooId fooId;
...
}
密鑰
@Embeddable
@Setter
@Getter @Getter
@NoArgsConstructor[/span
@AllArgsConstructor>
public class FooId implements Serializable {
@Column(name = "fooId"/span>)
私有字串id。
}
Repo
@Repository
public interface FooDefinitionRepository extends CrudRepository<FooDefinition, FooId> {
@Query("SELECT c FROM FooDefinition c LEFT JOIN FETCH c.bundles WHERE c.fooId = :fooId"/span>)
FooDefinition findByIdAndFetchBundlesEagerly(@Param("fooId") FooId fooId) 。
}
DB
CREATE TABLE foo_definition (
foo_id VARCHAR(50) NOT NULL PRIMARY KEY。
...
);
我也試過用查詢和傳入的型別來傳遞資訊,例如:
我也試過用查詢和傳入的型別來傳遞資訊。
@Query("SELECT c FROM FooDefinition c LEFT JOIN FETCH c.bundles WHERE c.fooId.id = :fooId"/span>)
FooDefinition findByIdAndFetchBundlesEagerly(@Param("fooId") FooId fooId) 。
@Query("SELECT c FROM FooDefinition c LEFT JOIN FETCH c.bundles WHERE c.fooId.id = :fooId"/span>)
FooDefinition findByIdAndFetchBundlesEagerly(@Param("fooId") String fooId)。
@Query("SELECT c FROM FooDefinition c LEFT JOIN FETCH c.bundles WHERE c.fooId = :fooId"/span>)
FooDefinition findByIdAndFetchBundlesEagerly(@Param("fooId") String fooId) 。
但是這些都不能很好地作業(不同的錯誤)
我在做什么?
我做錯了什么?
我在做什么?
uj5u.com熱心網友回復:
最后我不得不做兩件事:
- 替換掉了復雜的代碼。
- 用
String替換了 - 用
JoinColumn替換我的JoinTable映射,用于我的FooDefinition類中一些欄位的OneToMany關系 。
FooId的復雜鍵型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329870.html
標籤:
